mirror of
https://github.com/github/codeql.git
synced 2026-02-11 20:51:06 +01:00
Python support ListElement in MaD
This commit is contained in:
@@ -142,15 +142,13 @@ API::Node getExtraSuccessorFromNode(API::Node node, AccessPathTokenBase token) {
|
||||
// `DataFlow::DictionaryElementContent` just from seeing a subscript read, so we would
|
||||
// need to add that. (also need to handle things like `DictionaryElementAny` which
|
||||
// doesn't have any value for .getAnArgument())
|
||||
(
|
||||
token.getName() = "DictionaryElement" and
|
||||
result = node.getSubscript(token.getAnArgument())
|
||||
or
|
||||
token.getName() = "DictionaryElementAny" and
|
||||
result = node.getASubscript() and
|
||||
not exists(token.getAnArgument())
|
||||
// TODO: ListElement/SetElement/TupleElement
|
||||
)
|
||||
token.getName() = "DictionaryElement" and
|
||||
result = node.getSubscript(token.getAnArgument())
|
||||
or
|
||||
token.getName() in ["DictionaryElementAny", "ListElement"] and
|
||||
result = node.getASubscript() and
|
||||
not exists(token.getAnArgument())
|
||||
// TODO: SetElement/TupleElement
|
||||
// Some features don't have MaD tokens yet, they would need to be added to API-graphs first.
|
||||
// - decorators ("DecoratedClass", "DecoratedMember", "DecoratedParameter")
|
||||
}
|
||||
@@ -261,7 +259,7 @@ predicate isExtraValidTokenNameInIdentifyingAccessPath(string name) {
|
||||
name =
|
||||
[
|
||||
"Member", "Instance", "Awaited", "Call", "Method", "Subclass", "DictionaryElement",
|
||||
"DictionaryElementAny"
|
||||
"DictionaryElementAny", "ListElement"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -270,7 +268,7 @@ predicate isExtraValidTokenNameInIdentifyingAccessPath(string name) {
|
||||
* in an identifying access path.
|
||||
*/
|
||||
predicate isExtraValidNoArgumentTokenInIdentifyingAccessPath(string name) {
|
||||
name = ["Instance", "Awaited", "Call", "Subclass", "DictionaryElementAny"]
|
||||
name = ["Instance", "Awaited", "Call", "Subclass", "DictionaryElementAny", "ListElement"]
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -108,6 +108,7 @@ isSource
|
||||
| test.py:119:20:119:30 | ControlFlowNode for getSource() | test-source |
|
||||
| test.py:124:1:124:33 | ControlFlowNode for Attribute() | test-source |
|
||||
| test.py:126:11:126:43 | ControlFlowNode for Attribute() | test-source |
|
||||
| test.py:129:11:129:39 | ControlFlowNode for Attribute() | test-source |
|
||||
syntaxErrors
|
||||
| Member[foo |
|
||||
| Member[foo] .Member[bar] |
|
||||
|
||||
@@ -27,7 +27,7 @@ extensions:
|
||||
- ["testlib", "Member[source_dict].DictionaryElement[key].Member[func].ReturnValue", "test-source"]
|
||||
- ["testlib", "Member[source_dict_any].DictionaryElementAny.Member[func].ReturnValue", "test-source"]
|
||||
# TODO: Add support for list/tuples
|
||||
# - ["testlib", "Member[source_list].ListElement.Member[func].ReturnValue", "test-source"]
|
||||
- ["testlib", "Member[source_list].ListElement.Member[func].ReturnValue", "test-source"]
|
||||
# - ["testlib", "Member[source_tuple].TupleElement[0].Member[func].ReturnValue", "test-source"]
|
||||
|
||||
- addsTo:
|
||||
|
||||
Reference in New Issue
Block a user