diff --git a/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 5ec17b71df14..e25a740bd0bc 100644 --- a/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -139,6 +139,11 @@ module EssaFlow { contextManager.strictlyDominates(var) ) or + exists(ParameterDefinition pd | + nodeFrom.asCfgNode() = pd.getDefiningNode() and + nodeTo.asVar() = pd.getVariable() + ) + or // First use after definition // `y = 42` // `x = f(y)` diff --git a/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPublic.qll index c10a9c84a2f6..c104a8bb8e7c 100644 --- a/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/src/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -176,21 +176,21 @@ ExprNode exprNode(DataFlowExpr e) { result.getNode().getNode() = e } * The value of a parameter at function entry, viewed as a node in a data * flow graph. */ -class ParameterNode extends EssaNode { - ParameterNode() { var instanceof ParameterDefinition } +class ParameterNode extends CfgNode { + ParameterDefinition def; + + ParameterNode() { node = def.getDefiningNode() } /** * Holds if this node is the parameter of callable `c` at the * (zero-based) index `i`. */ - predicate isParameterOf(DataFlowCallable c, int i) { - var.(ParameterDefinition).getDefiningNode() = c.getParameter(i) - } + predicate isParameterOf(DataFlowCallable c, int i) { node = c.getParameter(i) } override DataFlowCallable getEnclosingCallable() { this.isParameterOf(result, _) } /** Gets the `Parameter` this `ParameterNode` represents. */ - Parameter getParameter() { result = var.(ParameterDefinition).getParameter() } + Parameter getParameter() { result = def.getParameter() } } /** diff --git a/python/ql/test/experimental/dataflow/basic/callGraph.expected b/python/ql/test/experimental/dataflow/basic/callGraph.expected index 99500138ca07..222e11cb54f6 100644 --- a/python/ql/test/experimental/dataflow/basic/callGraph.expected +++ b/python/ql/test/experimental/dataflow/basic/callGraph.expected @@ -1,3 +1,3 @@ | test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | -| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | SSA variable x | +| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x | | test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | diff --git a/python/ql/test/experimental/dataflow/basic/callGraphSinks.expected b/python/ql/test/experimental/dataflow/basic/callGraphSinks.expected index d45952975b92..17f3028ae23e 100644 --- a/python/ql/test/experimental/dataflow/basic/callGraphSinks.expected +++ b/python/ql/test/experimental/dataflow/basic/callGraphSinks.expected @@ -1,2 +1,2 @@ -| test.py:1:19:1:19 | SSA variable x | +| test.py:1:19:1:19 | ControlFlowNode for x | | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | diff --git a/python/ql/test/experimental/dataflow/basic/global.expected b/python/ql/test/experimental/dataflow/basic/global.expected index ad79f9aa5dd2..8894bcc190a0 100644 --- a/python/ql/test/experimental/dataflow/basic/global.expected +++ b/python/ql/test/experimental/dataflow/basic/global.expected @@ -1,6 +1,14 @@ | test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:1:5:1:17 | GSSA Variable obfuscated_id | | test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id | | test.py:1:5:1:17 | GSSA Variable obfuscated_id | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | SSA variable x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | SSA variable y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:3:3:3 | SSA variable z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:7:1:7:1 | GSSA Variable b | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | | test.py:1:19:1:19 | SSA variable x | test.py:2:3:2:3 | SSA variable y | | test.py:1:19:1:19 | SSA variable x | test.py:2:7:2:7 | ControlFlowNode for x | | test.py:1:19:1:19 | SSA variable x | test.py:3:3:3:3 | SSA variable z | @@ -28,6 +36,7 @@ | test.py:3:7:3:7 | ControlFlowNode for y | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | | test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:1:7:1 | GSSA Variable b | | test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | +| test.py:6:1:6:1 | GSSA Variable a | test.py:1:19:1:19 | ControlFlowNode for x | | test.py:6:1:6:1 | GSSA Variable a | test.py:1:19:1:19 | SSA variable x | | test.py:6:1:6:1 | GSSA Variable a | test.py:2:3:2:3 | SSA variable y | | test.py:6:1:6:1 | GSSA Variable a | test.py:2:7:2:7 | ControlFlowNode for x | @@ -37,6 +46,7 @@ | test.py:6:1:6:1 | GSSA Variable a | test.py:7:1:7:1 | GSSA Variable b | | test.py:6:1:6:1 | GSSA Variable a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | | test.py:6:1:6:1 | GSSA Variable a | test.py:7:19:7:19 | ControlFlowNode for a | +| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:1:19:1:19 | ControlFlowNode for x | | test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:1:19:1:19 | SSA variable x | | test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:2:3:2:3 | SSA variable y | | test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:2:7:2:7 | ControlFlowNode for x | @@ -48,6 +58,7 @@ | test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | | test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:7:19:7:19 | ControlFlowNode for a | | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | test.py:7:1:7:1 | GSSA Variable b | +| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x | | test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | SSA variable x | | test.py:7:19:7:19 | ControlFlowNode for a | test.py:2:3:2:3 | SSA variable y | | test.py:7:19:7:19 | ControlFlowNode for a | test.py:2:7:2:7 | ControlFlowNode for x | diff --git a/python/ql/test/experimental/dataflow/basic/globalStep.expected b/python/ql/test/experimental/dataflow/basic/globalStep.expected index fa37726b7e8c..4e9d4a8148b6 100644 --- a/python/ql/test/experimental/dataflow/basic/globalStep.expected +++ b/python/ql/test/experimental/dataflow/basic/globalStep.expected @@ -4,6 +4,30 @@ | test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id | | test.py:1:5:1:17 | GSSA Variable obfuscated_id | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id | | test.py:1:5:1:17 | GSSA Variable obfuscated_id | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | SSA variable x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | SSA variable x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | SSA variable x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | SSA variable x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | SSA variable y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | SSA variable y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | SSA variable y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | SSA variable y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:3:3:3 | SSA variable z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:3:3:3 | SSA variable z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:3:3:3 | SSA variable z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:3:3:3 | SSA variable z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z | | test.py:1:19:1:19 | SSA variable x | test.py:2:3:2:3 | SSA variable y | | test.py:1:19:1:19 | SSA variable x | test.py:2:3:2:3 | SSA variable y | | test.py:1:19:1:19 | SSA variable x | test.py:2:3:2:3 | SSA variable y | @@ -74,7 +98,7 @@ | test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:7:19:7:19 | ControlFlowNode for a | | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | test.py:7:1:7:1 | GSSA Variable b | | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | test.py:7:1:7:1 | GSSA Variable b | -| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | SSA variable x | -| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | SSA variable x | +| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x | +| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x | | test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | | test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | diff --git a/python/ql/test/experimental/dataflow/basic/local.expected b/python/ql/test/experimental/dataflow/basic/local.expected index b9eb44bbc5f2..c02b341eeaef 100644 --- a/python/ql/test/experimental/dataflow/basic/local.expected +++ b/python/ql/test/experimental/dataflow/basic/local.expected @@ -9,6 +9,12 @@ | test.py:1:5:1:17 | GSSA Variable obfuscated_id | test.py:1:5:1:17 | GSSA Variable obfuscated_id | | test.py:1:5:1:17 | GSSA Variable obfuscated_id | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id | | test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | ControlFlowNode for x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | SSA variable x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | SSA variable y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:3:3:3 | SSA variable z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z | | test.py:1:19:1:19 | SSA variable x | test.py:1:19:1:19 | SSA variable x | | test.py:1:19:1:19 | SSA variable x | test.py:2:3:2:3 | SSA variable y | | test.py:1:19:1:19 | SSA variable x | test.py:2:7:2:7 | ControlFlowNode for x | diff --git a/python/ql/test/experimental/dataflow/basic/localStep.expected b/python/ql/test/experimental/dataflow/basic/localStep.expected index 8618da21f6ac..e147bb9f4fc2 100644 --- a/python/ql/test/experimental/dataflow/basic/localStep.expected +++ b/python/ql/test/experimental/dataflow/basic/localStep.expected @@ -1,5 +1,6 @@ | test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:1:5:1:17 | GSSA Variable obfuscated_id | | test.py:1:5:1:17 | GSSA Variable obfuscated_id | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:1:19:1:19 | SSA variable x | | test.py:1:19:1:19 | SSA variable x | test.py:2:7:2:7 | ControlFlowNode for x | | test.py:2:3:2:3 | SSA variable y | test.py:3:7:3:7 | ControlFlowNode for y | | test.py:2:7:2:7 | ControlFlowNode for x | test.py:2:3:2:3 | SSA variable y | diff --git a/python/ql/test/experimental/dataflow/basic/maximalFlows.expected b/python/ql/test/experimental/dataflow/basic/maximalFlows.expected index ad108eceabe9..b6f8a1730f11 100644 --- a/python/ql/test/experimental/dataflow/basic/maximalFlows.expected +++ b/python/ql/test/experimental/dataflow/basic/maximalFlows.expected @@ -1,3 +1,5 @@ +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z | +| test.py:1:19:1:19 | ControlFlowNode for x | test.py:7:1:7:1 | GSSA Variable b | | test.py:1:19:1:19 | SSA variable x | test.py:4:10:4:10 | ControlFlowNode for z | | test.py:1:19:1:19 | SSA variable x | test.py:7:1:7:1 | GSSA Variable b | | test.py:2:3:2:3 | SSA variable y | test.py:4:10:4:10 | ControlFlowNode for z | diff --git a/python/ql/test/experimental/dataflow/coverage/argumentRouting1.expected b/python/ql/test/experimental/dataflow/coverage/argumentRouting1.expected index 45e28d9da8f1..ea80fa74c961 100644 --- a/python/ql/test/experimental/dataflow/coverage/argumentRouting1.expected +++ b/python/ql/test/experimental/dataflow/coverage/argumentRouting1.expected @@ -1,99 +1,99 @@ edges -| argumentPassing.py:65:5:65:5 | SSA variable a | argumentPassing.py:75:11:75:11 | ControlFlowNode for a | -| argumentPassing.py:89:22:89:25 | ControlFlowNode for arg1 | argumentPassing.py:65:5:65:5 | SSA variable a | -| argumentPassing.py:94:22:94:25 | ControlFlowNode for arg1 | argumentPassing.py:65:5:65:5 | SSA variable a | -| argumentPassing.py:97:19:97:19 | SSA variable a | argumentPassing.py:98:11:98:11 | ControlFlowNode for a | -| argumentPassing.py:104:19:104:22 | ControlFlowNode for arg1 | argumentPassing.py:97:19:97:19 | SSA variable a | -| argumentPassing.py:105:19:105:22 | ControlFlowNode for arg1 | argumentPassing.py:97:19:97:19 | SSA variable a | -| argumentPassing.py:106:19:106:22 | ControlFlowNode for arg1 | argumentPassing.py:97:19:97:19 | SSA variable a | -| argumentPassing.py:109:27:109:27 | SSA variable a | argumentPassing.py:110:11:110:11 | ControlFlowNode for a | -| argumentPassing.py:117:45:117:48 | ControlFlowNode for arg1 | argumentPassing.py:109:27:109:27 | SSA variable a | -| argumentPassing.py:118:27:118:30 | ControlFlowNode for arg1 | argumentPassing.py:109:27:109:27 | SSA variable a | -| argumentPassing.py:119:27:119:30 | ControlFlowNode for arg1 | argumentPassing.py:109:27:109:27 | SSA variable a | -| argumentPassing.py:120:5:120:70 | KwUnpacked a | argumentPassing.py:109:27:109:27 | SSA variable a | +| argumentPassing.py:65:5:65:5 | ControlFlowNode for a | argumentPassing.py:75:11:75:11 | ControlFlowNode for a | +| argumentPassing.py:89:22:89:25 | ControlFlowNode for arg1 | argumentPassing.py:65:5:65:5 | ControlFlowNode for a | +| argumentPassing.py:94:22:94:25 | ControlFlowNode for arg1 | argumentPassing.py:65:5:65:5 | ControlFlowNode for a | +| argumentPassing.py:97:19:97:19 | ControlFlowNode for a | argumentPassing.py:98:11:98:11 | ControlFlowNode for a | +| argumentPassing.py:104:19:104:22 | ControlFlowNode for arg1 | argumentPassing.py:97:19:97:19 | ControlFlowNode for a | +| argumentPassing.py:105:19:105:22 | ControlFlowNode for arg1 | argumentPassing.py:97:19:97:19 | ControlFlowNode for a | +| argumentPassing.py:106:19:106:22 | ControlFlowNode for arg1 | argumentPassing.py:97:19:97:19 | ControlFlowNode for a | +| argumentPassing.py:109:27:109:27 | ControlFlowNode for a | argumentPassing.py:110:11:110:11 | ControlFlowNode for a | +| argumentPassing.py:117:45:117:48 | ControlFlowNode for arg1 | argumentPassing.py:109:27:109:27 | ControlFlowNode for a | +| argumentPassing.py:118:27:118:30 | ControlFlowNode for arg1 | argumentPassing.py:109:27:109:27 | ControlFlowNode for a | +| argumentPassing.py:119:27:119:30 | ControlFlowNode for arg1 | argumentPassing.py:109:27:109:27 | ControlFlowNode for a | +| argumentPassing.py:120:5:120:70 | KwUnpacked a | argumentPassing.py:109:27:109:27 | ControlFlowNode for a | | argumentPassing.py:120:59:120:69 | ControlFlowNode for Dict [Dictionary element at key a] | argumentPassing.py:120:5:120:70 | KwUnpacked a | | argumentPassing.py:120:65:120:68 | ControlFlowNode for arg1 | argumentPassing.py:120:59:120:69 | ControlFlowNode for Dict [Dictionary element at key a] | -| argumentPassing.py:123:28:123:28 | SSA variable a | argumentPassing.py:124:11:124:11 | ControlFlowNode for a | -| argumentPassing.py:132:28:132:31 | ControlFlowNode for arg1 | argumentPassing.py:123:28:123:28 | SSA variable a | -| argumentPassing.py:138:22:138:24 | SSA variable foo | argumentPassing.py:139:11:139:13 | ControlFlowNode for foo | -| argumentPassing.py:160:46:160:49 | ControlFlowNode for arg1 | argumentPassing.py:138:22:138:24 | SSA variable foo | -| argumentPassing.py:165:18:165:18 | SSA variable a | argumentPassing.py:166:15:166:15 | ControlFlowNode for a | -| argumentPassing.py:168:14:168:17 | ControlFlowNode for arg1 | argumentPassing.py:165:18:165:18 | SSA variable a | -| argumentPassing.py:172:23:172:23 | SSA variable a | argumentPassing.py:173:15:173:15 | ControlFlowNode for a | -| argumentPassing.py:175:19:175:22 | ControlFlowNode for arg1 | argumentPassing.py:172:23:172:23 | SSA variable a | -| argumentPassing.py:179:20:179:20 | SSA variable a [Tuple element at index 0] | argumentPassing.py:181:19:181:19 | ControlFlowNode for a [Tuple element at index 0] | +| argumentPassing.py:123:28:123:28 | ControlFlowNode for a | argumentPassing.py:124:11:124:11 | ControlFlowNode for a | +| argumentPassing.py:132:28:132:31 | ControlFlowNode for arg1 | argumentPassing.py:123:28:123:28 | ControlFlowNode for a | +| argumentPassing.py:138:22:138:24 | ControlFlowNode for foo | argumentPassing.py:139:11:139:13 | ControlFlowNode for foo | +| argumentPassing.py:160:46:160:49 | ControlFlowNode for arg1 | argumentPassing.py:138:22:138:24 | ControlFlowNode for foo | +| argumentPassing.py:165:18:165:18 | ControlFlowNode for a | argumentPassing.py:166:15:166:15 | ControlFlowNode for a | +| argumentPassing.py:168:14:168:17 | ControlFlowNode for arg1 | argumentPassing.py:165:18:165:18 | ControlFlowNode for a | +| argumentPassing.py:172:23:172:23 | ControlFlowNode for a | argumentPassing.py:173:15:173:15 | ControlFlowNode for a | +| argumentPassing.py:175:19:175:22 | ControlFlowNode for arg1 | argumentPassing.py:172:23:172:23 | ControlFlowNode for a | +| argumentPassing.py:179:20:179:20 | ControlFlowNode for a [Tuple element at index 0] | argumentPassing.py:181:19:181:19 | ControlFlowNode for a [Tuple element at index 0] | | argumentPassing.py:181:19:181:19 | ControlFlowNode for a [Tuple element at index 0] | argumentPassing.py:181:19:181:22 | ControlFlowNode for Subscript | -| argumentPassing.py:183:5:183:19 | PosOverflowNode for with_star() [Tuple element at index 0] | argumentPassing.py:179:20:179:20 | SSA variable a [Tuple element at index 0] | +| argumentPassing.py:183:5:183:19 | PosOverflowNode for with_star() [Tuple element at index 0] | argumentPassing.py:179:20:179:20 | ControlFlowNode for a [Tuple element at index 0] | | argumentPassing.py:183:15:183:18 | ControlFlowNode for arg1 | argumentPassing.py:183:5:183:19 | PosOverflowNode for with_star() [Tuple element at index 0] | -| argumentPassing.py:187:17:187:17 | SSA variable a | argumentPassing.py:188:15:188:15 | ControlFlowNode for a | -| argumentPassing.py:190:13:190:16 | ControlFlowNode for arg1 | argumentPassing.py:187:17:187:17 | SSA variable a | -| argumentPassing.py:194:18:194:18 | SSA variable a | argumentPassing.py:195:15:195:15 | ControlFlowNode for a | -| argumentPassing.py:197:16:197:19 | ControlFlowNode for arg1 | argumentPassing.py:194:18:194:18 | SSA variable a | -| argumentPassing.py:201:17:201:17 | SSA variable a | argumentPassing.py:202:15:202:15 | ControlFlowNode for a | -| argumentPassing.py:204:15:204:18 | ControlFlowNode for arg1 | argumentPassing.py:201:17:201:17 | SSA variable a | -| argumentPassing.py:208:27:208:27 | SSA variable a [Dictionary element at key a] | argumentPassing.py:209:15:209:15 | ControlFlowNode for a [Dictionary element at key a] | +| argumentPassing.py:187:17:187:17 | ControlFlowNode for a | argumentPassing.py:188:15:188:15 | ControlFlowNode for a | +| argumentPassing.py:190:13:190:16 | ControlFlowNode for arg1 | argumentPassing.py:187:17:187:17 | ControlFlowNode for a | +| argumentPassing.py:194:18:194:18 | ControlFlowNode for a | argumentPassing.py:195:15:195:15 | ControlFlowNode for a | +| argumentPassing.py:197:16:197:19 | ControlFlowNode for arg1 | argumentPassing.py:194:18:194:18 | ControlFlowNode for a | +| argumentPassing.py:201:17:201:17 | ControlFlowNode for a | argumentPassing.py:202:15:202:15 | ControlFlowNode for a | +| argumentPassing.py:204:15:204:18 | ControlFlowNode for arg1 | argumentPassing.py:201:17:201:17 | ControlFlowNode for a | +| argumentPassing.py:208:27:208:27 | ControlFlowNode for a [Dictionary element at key a] | argumentPassing.py:209:15:209:15 | ControlFlowNode for a [Dictionary element at key a] | | argumentPassing.py:209:15:209:15 | ControlFlowNode for a [Dictionary element at key a] | argumentPassing.py:209:15:209:20 | ControlFlowNode for Subscript | -| argumentPassing.py:211:5:211:27 | KwOverflowNode for with_doublestar() [Dictionary element at key a] | argumentPassing.py:208:27:208:27 | SSA variable a [Dictionary element at key a] | +| argumentPassing.py:211:5:211:27 | KwOverflowNode for with_doublestar() [Dictionary element at key a] | argumentPassing.py:208:27:208:27 | ControlFlowNode for a [Dictionary element at key a] | | argumentPassing.py:211:23:211:26 | ControlFlowNode for arg1 | argumentPassing.py:211:5:211:27 | KwOverflowNode for with_doublestar() [Dictionary element at key a] | -| classes.py:555:21:555:24 | SSA variable self | classes.py:557:15:557:18 | ControlFlowNode for self | +| classes.py:555:21:555:24 | ControlFlowNode for self | classes.py:557:15:557:18 | ControlFlowNode for self | | classes.py:563:5:563:16 | SSA variable with_getitem | classes.py:565:5:565:16 | ControlFlowNode for with_getitem | -| classes.py:565:5:565:16 | ControlFlowNode for with_getitem | classes.py:555:21:555:24 | SSA variable self | -| classes.py:570:21:570:24 | SSA variable self | classes.py:573:15:573:18 | ControlFlowNode for self | +| classes.py:565:5:565:16 | ControlFlowNode for with_getitem | classes.py:555:21:555:24 | ControlFlowNode for self | +| classes.py:570:21:570:24 | ControlFlowNode for self | classes.py:573:15:573:18 | ControlFlowNode for self | | classes.py:578:5:578:16 | SSA variable with_setitem | classes.py:581:5:581:16 | ControlFlowNode for with_setitem | -| classes.py:581:5:581:16 | ControlFlowNode for with_setitem | classes.py:570:21:570:24 | SSA variable self | -| classes.py:586:21:586:24 | SSA variable self | classes.py:588:15:588:18 | ControlFlowNode for self | +| classes.py:581:5:581:16 | ControlFlowNode for with_setitem | classes.py:570:21:570:24 | ControlFlowNode for self | +| classes.py:586:21:586:24 | ControlFlowNode for self | classes.py:588:15:588:18 | ControlFlowNode for self | | classes.py:593:5:593:16 | SSA variable with_delitem | classes.py:595:9:595:20 | ControlFlowNode for with_delitem | -| classes.py:595:9:595:20 | ControlFlowNode for with_delitem | classes.py:586:21:586:24 | SSA variable self | -| classes.py:657:17:657:20 | SSA variable self | classes.py:659:15:659:18 | ControlFlowNode for self | +| classes.py:595:9:595:20 | ControlFlowNode for with_delitem | classes.py:586:21:586:24 | ControlFlowNode for self | +| classes.py:657:17:657:20 | ControlFlowNode for self | classes.py:659:15:659:18 | ControlFlowNode for self | | classes.py:665:5:665:12 | SSA variable with_add | classes.py:667:5:667:12 | ControlFlowNode for with_add | -| classes.py:667:5:667:12 | ControlFlowNode for with_add | classes.py:657:17:657:20 | SSA variable self | -| classes.py:672:17:672:20 | SSA variable self | classes.py:674:15:674:18 | ControlFlowNode for self | +| classes.py:667:5:667:12 | ControlFlowNode for with_add | classes.py:657:17:657:20 | ControlFlowNode for self | +| classes.py:672:17:672:20 | ControlFlowNode for self | classes.py:674:15:674:18 | ControlFlowNode for self | | classes.py:680:5:680:12 | SSA variable with_sub | classes.py:682:5:682:12 | ControlFlowNode for with_sub | -| classes.py:682:5:682:12 | ControlFlowNode for with_sub | classes.py:672:17:672:20 | SSA variable self | -| classes.py:687:17:687:20 | SSA variable self | classes.py:689:15:689:18 | ControlFlowNode for self | +| classes.py:682:5:682:12 | ControlFlowNode for with_sub | classes.py:672:17:672:20 | ControlFlowNode for self | +| classes.py:687:17:687:20 | ControlFlowNode for self | classes.py:689:15:689:18 | ControlFlowNode for self | | classes.py:695:5:695:12 | SSA variable with_mul | classes.py:697:5:697:12 | ControlFlowNode for with_mul | -| classes.py:697:5:697:12 | ControlFlowNode for with_mul | classes.py:687:17:687:20 | SSA variable self | -| classes.py:702:20:702:23 | SSA variable self | classes.py:704:15:704:18 | ControlFlowNode for self | +| classes.py:697:5:697:12 | ControlFlowNode for with_mul | classes.py:687:17:687:20 | ControlFlowNode for self | +| classes.py:702:20:702:23 | ControlFlowNode for self | classes.py:704:15:704:18 | ControlFlowNode for self | | classes.py:710:5:710:15 | SSA variable with_matmul | classes.py:712:5:712:15 | ControlFlowNode for with_matmul | -| classes.py:712:5:712:15 | ControlFlowNode for with_matmul | classes.py:702:20:702:23 | SSA variable self | -| classes.py:717:21:717:24 | SSA variable self | classes.py:719:15:719:18 | ControlFlowNode for self | +| classes.py:712:5:712:15 | ControlFlowNode for with_matmul | classes.py:702:20:702:23 | ControlFlowNode for self | +| classes.py:717:21:717:24 | ControlFlowNode for self | classes.py:719:15:719:18 | ControlFlowNode for self | | classes.py:725:5:725:16 | SSA variable with_truediv | classes.py:727:5:727:16 | ControlFlowNode for with_truediv | -| classes.py:727:5:727:16 | ControlFlowNode for with_truediv | classes.py:717:21:717:24 | SSA variable self | -| classes.py:732:22:732:25 | SSA variable self | classes.py:734:15:734:18 | ControlFlowNode for self | +| classes.py:727:5:727:16 | ControlFlowNode for with_truediv | classes.py:717:21:717:24 | ControlFlowNode for self | +| classes.py:732:22:732:25 | ControlFlowNode for self | classes.py:734:15:734:18 | ControlFlowNode for self | | classes.py:740:5:740:17 | SSA variable with_floordiv | classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | -| classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | classes.py:732:22:732:25 | SSA variable self | -| classes.py:747:17:747:20 | SSA variable self | classes.py:749:15:749:18 | ControlFlowNode for self | +| classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | classes.py:732:22:732:25 | ControlFlowNode for self | +| classes.py:747:17:747:20 | ControlFlowNode for self | classes.py:749:15:749:18 | ControlFlowNode for self | | classes.py:755:5:755:12 | SSA variable with_mod | classes.py:757:5:757:12 | ControlFlowNode for with_mod | -| classes.py:757:5:757:12 | ControlFlowNode for with_mod | classes.py:747:17:747:20 | SSA variable self | -| classes.py:777:17:777:20 | SSA variable self | classes.py:779:15:779:18 | ControlFlowNode for self | +| classes.py:757:5:757:12 | ControlFlowNode for with_mod | classes.py:747:17:747:20 | ControlFlowNode for self | +| classes.py:777:17:777:20 | ControlFlowNode for self | classes.py:779:15:779:18 | ControlFlowNode for self | | classes.py:791:5:791:12 | SSA variable with_pow | classes.py:793:5:793:12 | ControlFlowNode for with_pow | -| classes.py:793:5:793:12 | ControlFlowNode for with_pow | classes.py:777:17:777:20 | SSA variable self | -| classes.py:798:20:798:23 | SSA variable self | classes.py:800:15:800:18 | ControlFlowNode for self | +| classes.py:793:5:793:12 | ControlFlowNode for with_pow | classes.py:777:17:777:20 | ControlFlowNode for self | +| classes.py:798:20:798:23 | ControlFlowNode for self | classes.py:800:15:800:18 | ControlFlowNode for self | | classes.py:806:5:806:15 | SSA variable with_lshift | classes.py:808:5:808:15 | ControlFlowNode for with_lshift | -| classes.py:808:5:808:15 | ControlFlowNode for with_lshift | classes.py:798:20:798:23 | SSA variable self | -| classes.py:813:20:813:23 | SSA variable self | classes.py:815:15:815:18 | ControlFlowNode for self | +| classes.py:808:5:808:15 | ControlFlowNode for with_lshift | classes.py:798:20:798:23 | ControlFlowNode for self | +| classes.py:813:20:813:23 | ControlFlowNode for self | classes.py:815:15:815:18 | ControlFlowNode for self | | classes.py:821:5:821:15 | SSA variable with_rshift | classes.py:823:5:823:15 | ControlFlowNode for with_rshift | -| classes.py:823:5:823:15 | ControlFlowNode for with_rshift | classes.py:813:20:813:23 | SSA variable self | -| classes.py:828:17:828:20 | SSA variable self | classes.py:830:15:830:18 | ControlFlowNode for self | +| classes.py:823:5:823:15 | ControlFlowNode for with_rshift | classes.py:813:20:813:23 | ControlFlowNode for self | +| classes.py:828:17:828:20 | ControlFlowNode for self | classes.py:830:15:830:18 | ControlFlowNode for self | | classes.py:836:5:836:12 | SSA variable with_and | classes.py:838:5:838:12 | ControlFlowNode for with_and | -| classes.py:838:5:838:12 | ControlFlowNode for with_and | classes.py:828:17:828:20 | SSA variable self | -| classes.py:843:17:843:20 | SSA variable self | classes.py:845:15:845:18 | ControlFlowNode for self | +| classes.py:838:5:838:12 | ControlFlowNode for with_and | classes.py:828:17:828:20 | ControlFlowNode for self | +| classes.py:843:17:843:20 | ControlFlowNode for self | classes.py:845:15:845:18 | ControlFlowNode for self | | classes.py:851:5:851:12 | SSA variable with_xor | classes.py:853:5:853:12 | ControlFlowNode for with_xor | -| classes.py:853:5:853:12 | ControlFlowNode for with_xor | classes.py:843:17:843:20 | SSA variable self | -| classes.py:858:16:858:19 | SSA variable self | classes.py:860:15:860:18 | ControlFlowNode for self | +| classes.py:853:5:853:12 | ControlFlowNode for with_xor | classes.py:843:17:843:20 | ControlFlowNode for self | +| classes.py:858:16:858:19 | ControlFlowNode for self | classes.py:860:15:860:18 | ControlFlowNode for self | | classes.py:866:5:866:11 | SSA variable with_or | classes.py:868:5:868:11 | ControlFlowNode for with_or | -| classes.py:868:5:868:11 | ControlFlowNode for with_or | classes.py:858:16:858:19 | SSA variable self | +| classes.py:868:5:868:11 | ControlFlowNode for with_or | classes.py:858:16:858:19 | ControlFlowNode for self | nodes -| argumentPassing.py:65:5:65:5 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:65:5:65:5 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:75:11:75:11 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:89:22:89:25 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | | argumentPassing.py:94:22:94:25 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:97:19:97:19 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:97:19:97:19 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:98:11:98:11 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:104:19:104:22 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | | argumentPassing.py:105:19:105:22 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | | argumentPassing.py:106:19:106:22 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:109:27:109:27 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:109:27:109:27 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:110:11:110:11 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:117:45:117:48 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | | argumentPassing.py:118:27:118:30 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | @@ -101,98 +101,98 @@ nodes | argumentPassing.py:120:5:120:70 | KwUnpacked a | semmle.label | KwUnpacked a | | argumentPassing.py:120:59:120:69 | ControlFlowNode for Dict [Dictionary element at key a] | semmle.label | ControlFlowNode for Dict [Dictionary element at key a] | | argumentPassing.py:120:65:120:68 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:123:28:123:28 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:123:28:123:28 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:124:11:124:11 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:132:28:132:31 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:138:22:138:24 | SSA variable foo | semmle.label | SSA variable foo | +| argumentPassing.py:138:22:138:24 | ControlFlowNode for foo | semmle.label | ControlFlowNode for foo | | argumentPassing.py:139:11:139:13 | ControlFlowNode for foo | semmle.label | ControlFlowNode for foo | | argumentPassing.py:160:46:160:49 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:165:18:165:18 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:165:18:165:18 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:166:15:166:15 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:168:14:168:17 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:172:23:172:23 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:172:23:172:23 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:173:15:173:15 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:175:19:175:22 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:179:20:179:20 | SSA variable a [Tuple element at index 0] | semmle.label | SSA variable a [Tuple element at index 0] | +| argumentPassing.py:179:20:179:20 | ControlFlowNode for a [Tuple element at index 0] | semmle.label | ControlFlowNode for a [Tuple element at index 0] | | argumentPassing.py:181:19:181:19 | ControlFlowNode for a [Tuple element at index 0] | semmle.label | ControlFlowNode for a [Tuple element at index 0] | | argumentPassing.py:181:19:181:22 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | | argumentPassing.py:183:5:183:19 | PosOverflowNode for with_star() [Tuple element at index 0] | semmle.label | PosOverflowNode for with_star() [Tuple element at index 0] | | argumentPassing.py:183:15:183:18 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:187:17:187:17 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:187:17:187:17 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:188:15:188:15 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:190:13:190:16 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:194:18:194:18 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:194:18:194:18 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:195:15:195:15 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:197:16:197:19 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:201:17:201:17 | SSA variable a | semmle.label | SSA variable a | +| argumentPassing.py:201:17:201:17 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:202:15:202:15 | ControlFlowNode for a | semmle.label | ControlFlowNode for a | | argumentPassing.py:204:15:204:18 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| argumentPassing.py:208:27:208:27 | SSA variable a [Dictionary element at key a] | semmle.label | SSA variable a [Dictionary element at key a] | +| argumentPassing.py:208:27:208:27 | ControlFlowNode for a [Dictionary element at key a] | semmle.label | ControlFlowNode for a [Dictionary element at key a] | | argumentPassing.py:209:15:209:15 | ControlFlowNode for a [Dictionary element at key a] | semmle.label | ControlFlowNode for a [Dictionary element at key a] | | argumentPassing.py:209:15:209:20 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | | argumentPassing.py:211:5:211:27 | KwOverflowNode for with_doublestar() [Dictionary element at key a] | semmle.label | KwOverflowNode for with_doublestar() [Dictionary element at key a] | | argumentPassing.py:211:23:211:26 | ControlFlowNode for arg1 | semmle.label | ControlFlowNode for arg1 | -| classes.py:555:21:555:24 | SSA variable self | semmle.label | SSA variable self | +| classes.py:555:21:555:24 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:557:15:557:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:563:5:563:16 | SSA variable with_getitem | semmle.label | SSA variable with_getitem | | classes.py:565:5:565:16 | ControlFlowNode for with_getitem | semmle.label | ControlFlowNode for with_getitem | -| classes.py:570:21:570:24 | SSA variable self | semmle.label | SSA variable self | +| classes.py:570:21:570:24 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:573:15:573:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:578:5:578:16 | SSA variable with_setitem | semmle.label | SSA variable with_setitem | | classes.py:581:5:581:16 | ControlFlowNode for with_setitem | semmle.label | ControlFlowNode for with_setitem | -| classes.py:586:21:586:24 | SSA variable self | semmle.label | SSA variable self | +| classes.py:586:21:586:24 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:588:15:588:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:593:5:593:16 | SSA variable with_delitem | semmle.label | SSA variable with_delitem | | classes.py:595:9:595:20 | ControlFlowNode for with_delitem | semmle.label | ControlFlowNode for with_delitem | -| classes.py:657:17:657:20 | SSA variable self | semmle.label | SSA variable self | +| classes.py:657:17:657:20 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:659:15:659:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:665:5:665:12 | SSA variable with_add | semmle.label | SSA variable with_add | | classes.py:667:5:667:12 | ControlFlowNode for with_add | semmle.label | ControlFlowNode for with_add | -| classes.py:672:17:672:20 | SSA variable self | semmle.label | SSA variable self | +| classes.py:672:17:672:20 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:674:15:674:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:680:5:680:12 | SSA variable with_sub | semmle.label | SSA variable with_sub | | classes.py:682:5:682:12 | ControlFlowNode for with_sub | semmle.label | ControlFlowNode for with_sub | -| classes.py:687:17:687:20 | SSA variable self | semmle.label | SSA variable self | +| classes.py:687:17:687:20 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:689:15:689:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:695:5:695:12 | SSA variable with_mul | semmle.label | SSA variable with_mul | | classes.py:697:5:697:12 | ControlFlowNode for with_mul | semmle.label | ControlFlowNode for with_mul | -| classes.py:702:20:702:23 | SSA variable self | semmle.label | SSA variable self | +| classes.py:702:20:702:23 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:704:15:704:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:710:5:710:15 | SSA variable with_matmul | semmle.label | SSA variable with_matmul | | classes.py:712:5:712:15 | ControlFlowNode for with_matmul | semmle.label | ControlFlowNode for with_matmul | -| classes.py:717:21:717:24 | SSA variable self | semmle.label | SSA variable self | +| classes.py:717:21:717:24 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:719:15:719:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:725:5:725:16 | SSA variable with_truediv | semmle.label | SSA variable with_truediv | | classes.py:727:5:727:16 | ControlFlowNode for with_truediv | semmle.label | ControlFlowNode for with_truediv | -| classes.py:732:22:732:25 | SSA variable self | semmle.label | SSA variable self | +| classes.py:732:22:732:25 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:734:15:734:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:740:5:740:17 | SSA variable with_floordiv | semmle.label | SSA variable with_floordiv | | classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | semmle.label | ControlFlowNode for with_floordiv | -| classes.py:747:17:747:20 | SSA variable self | semmle.label | SSA variable self | +| classes.py:747:17:747:20 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:749:15:749:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:755:5:755:12 | SSA variable with_mod | semmle.label | SSA variable with_mod | | classes.py:757:5:757:12 | ControlFlowNode for with_mod | semmle.label | ControlFlowNode for with_mod | -| classes.py:777:17:777:20 | SSA variable self | semmle.label | SSA variable self | +| classes.py:777:17:777:20 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:779:15:779:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:791:5:791:12 | SSA variable with_pow | semmle.label | SSA variable with_pow | | classes.py:793:5:793:12 | ControlFlowNode for with_pow | semmle.label | ControlFlowNode for with_pow | -| classes.py:798:20:798:23 | SSA variable self | semmle.label | SSA variable self | +| classes.py:798:20:798:23 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:800:15:800:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:806:5:806:15 | SSA variable with_lshift | semmle.label | SSA variable with_lshift | | classes.py:808:5:808:15 | ControlFlowNode for with_lshift | semmle.label | ControlFlowNode for with_lshift | -| classes.py:813:20:813:23 | SSA variable self | semmle.label | SSA variable self | +| classes.py:813:20:813:23 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:815:15:815:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:821:5:821:15 | SSA variable with_rshift | semmle.label | SSA variable with_rshift | | classes.py:823:5:823:15 | ControlFlowNode for with_rshift | semmle.label | ControlFlowNode for with_rshift | -| classes.py:828:17:828:20 | SSA variable self | semmle.label | SSA variable self | +| classes.py:828:17:828:20 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:830:15:830:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:836:5:836:12 | SSA variable with_and | semmle.label | SSA variable with_and | | classes.py:838:5:838:12 | ControlFlowNode for with_and | semmle.label | ControlFlowNode for with_and | -| classes.py:843:17:843:20 | SSA variable self | semmle.label | SSA variable self | +| classes.py:843:17:843:20 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:845:15:845:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:851:5:851:12 | SSA variable with_xor | semmle.label | SSA variable with_xor | | classes.py:853:5:853:12 | ControlFlowNode for with_xor | semmle.label | ControlFlowNode for with_xor | -| classes.py:858:16:858:19 | SSA variable self | semmle.label | SSA variable self | +| classes.py:858:16:858:19 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:860:15:860:18 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | | classes.py:866:5:866:11 | SSA variable with_or | semmle.label | SSA variable with_or | | classes.py:868:5:868:11 | ControlFlowNode for with_or | semmle.label | ControlFlowNode for with_or | diff --git a/python/ql/test/experimental/dataflow/coverage/argumentRouting2.expected b/python/ql/test/experimental/dataflow/coverage/argumentRouting2.expected index e636f9815565..b5188b55a9ee 100644 --- a/python/ql/test/experimental/dataflow/coverage/argumentRouting2.expected +++ b/python/ql/test/experimental/dataflow/coverage/argumentRouting2.expected @@ -1,124 +1,124 @@ edges -| argumentPassing.py:66:5:66:5 | SSA variable b | argumentPassing.py:76:11:76:11 | ControlFlowNode for b | -| argumentPassing.py:94:28:94:31 | ControlFlowNode for arg2 | argumentPassing.py:66:5:66:5 | SSA variable b | -| argumentPassing.py:97:25:97:25 | SSA variable b | argumentPassing.py:99:11:99:11 | ControlFlowNode for b | -| argumentPassing.py:104:25:104:28 | ControlFlowNode for arg2 | argumentPassing.py:97:25:97:25 | SSA variable b | -| argumentPassing.py:105:27:105:30 | ControlFlowNode for arg2 | argumentPassing.py:97:25:97:25 | SSA variable b | -| argumentPassing.py:109:30:109:30 | SSA variable b | argumentPassing.py:111:11:111:11 | ControlFlowNode for b | -| argumentPassing.py:117:29:117:32 | ControlFlowNode for arg2 | argumentPassing.py:109:30:109:30 | SSA variable b | -| argumentPassing.py:120:5:120:70 | KwUnpacked b | argumentPassing.py:109:30:109:30 | SSA variable b | +| argumentPassing.py:66:5:66:5 | ControlFlowNode for b | argumentPassing.py:76:11:76:11 | ControlFlowNode for b | +| argumentPassing.py:94:28:94:31 | ControlFlowNode for arg2 | argumentPassing.py:66:5:66:5 | ControlFlowNode for b | +| argumentPassing.py:97:25:97:25 | ControlFlowNode for b | argumentPassing.py:99:11:99:11 | ControlFlowNode for b | +| argumentPassing.py:104:25:104:28 | ControlFlowNode for arg2 | argumentPassing.py:97:25:97:25 | ControlFlowNode for b | +| argumentPassing.py:105:27:105:30 | ControlFlowNode for arg2 | argumentPassing.py:97:25:97:25 | ControlFlowNode for b | +| argumentPassing.py:109:30:109:30 | ControlFlowNode for b | argumentPassing.py:111:11:111:11 | ControlFlowNode for b | +| argumentPassing.py:117:29:117:32 | ControlFlowNode for arg2 | argumentPassing.py:109:30:109:30 | ControlFlowNode for b | +| argumentPassing.py:120:5:120:70 | KwUnpacked b | argumentPassing.py:109:30:109:30 | ControlFlowNode for b | | argumentPassing.py:120:29:120:39 | ControlFlowNode for Dict [Dictionary element at key b] | argumentPassing.py:120:5:120:70 | KwUnpacked b | | argumentPassing.py:120:35:120:38 | ControlFlowNode for arg2 | argumentPassing.py:120:29:120:39 | ControlFlowNode for Dict [Dictionary element at key b] | -| argumentPassing.py:123:36:123:36 | SSA variable b | argumentPassing.py:125:11:125:11 | ControlFlowNode for b | -| argumentPassing.py:133:30:133:33 | ControlFlowNode for arg2 | argumentPassing.py:123:36:123:36 | SSA variable b | -| argumentPassing.py:138:29:138:34 | SSA variable kwargs [Dictionary element at key bar] | argumentPassing.py:140:20:140:25 | ControlFlowNode for kwargs [Dictionary element at key bar] | -| argumentPassing.py:140:5:140:26 | KwUnpacked bar | argumentPassing.py:145:18:145:20 | SSA variable bar | +| argumentPassing.py:123:36:123:36 | ControlFlowNode for b | argumentPassing.py:125:11:125:11 | ControlFlowNode for b | +| argumentPassing.py:133:30:133:33 | ControlFlowNode for arg2 | argumentPassing.py:123:36:123:36 | ControlFlowNode for b | +| argumentPassing.py:138:29:138:34 | ControlFlowNode for kwargs [Dictionary element at key bar] | argumentPassing.py:140:20:140:25 | ControlFlowNode for kwargs [Dictionary element at key bar] | +| argumentPassing.py:140:5:140:26 | KwUnpacked bar | argumentPassing.py:145:18:145:20 | ControlFlowNode for bar | | argumentPassing.py:140:20:140:25 | ControlFlowNode for kwargs [Dictionary element at key bar] | argumentPassing.py:140:5:140:26 | KwUnpacked bar | -| argumentPassing.py:145:18:145:20 | SSA variable bar | argumentPassing.py:146:11:146:13 | ControlFlowNode for bar | -| argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key bar] | argumentPassing.py:138:29:138:34 | SSA variable kwargs [Dictionary element at key bar] | +| argumentPassing.py:145:18:145:20 | ControlFlowNode for bar | argumentPassing.py:146:11:146:13 | ControlFlowNode for bar | +| argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key bar] | argumentPassing.py:138:29:138:34 | ControlFlowNode for kwargs [Dictionary element at key bar] | | argumentPassing.py:160:36:160:39 | ControlFlowNode for arg2 | argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key bar] | -| classes.py:555:27:555:29 | SSA variable key | classes.py:556:15:556:17 | ControlFlowNode for key | -| classes.py:565:18:565:21 | ControlFlowNode for arg2 | classes.py:555:27:555:29 | SSA variable key | -| classes.py:570:27:570:29 | SSA variable key | classes.py:572:15:572:17 | ControlFlowNode for key | -| classes.py:581:18:581:21 | ControlFlowNode for arg2 | classes.py:570:27:570:29 | SSA variable key | -| classes.py:586:27:586:29 | SSA variable key | classes.py:587:15:587:17 | ControlFlowNode for key | -| classes.py:595:22:595:25 | ControlFlowNode for arg2 | classes.py:586:27:586:29 | SSA variable key | -| classes.py:657:23:657:27 | SSA variable other | classes.py:658:15:658:19 | ControlFlowNode for other | -| classes.py:667:16:667:19 | ControlFlowNode for arg2 | classes.py:657:23:657:27 | SSA variable other | -| classes.py:672:23:672:27 | SSA variable other | classes.py:673:15:673:19 | ControlFlowNode for other | -| classes.py:682:16:682:19 | ControlFlowNode for arg2 | classes.py:672:23:672:27 | SSA variable other | -| classes.py:687:23:687:27 | SSA variable other | classes.py:688:15:688:19 | ControlFlowNode for other | -| classes.py:697:16:697:19 | ControlFlowNode for arg2 | classes.py:687:23:687:27 | SSA variable other | -| classes.py:702:26:702:30 | SSA variable other | classes.py:703:15:703:19 | ControlFlowNode for other | -| classes.py:712:19:712:22 | ControlFlowNode for arg2 | classes.py:702:26:702:30 | SSA variable other | -| classes.py:717:27:717:31 | SSA variable other | classes.py:718:15:718:19 | ControlFlowNode for other | -| classes.py:727:20:727:23 | ControlFlowNode for arg2 | classes.py:717:27:717:31 | SSA variable other | -| classes.py:732:28:732:32 | SSA variable other | classes.py:733:15:733:19 | ControlFlowNode for other | -| classes.py:742:22:742:25 | ControlFlowNode for arg2 | classes.py:732:28:732:32 | SSA variable other | -| classes.py:747:23:747:27 | SSA variable other | classes.py:748:15:748:19 | ControlFlowNode for other | -| classes.py:757:16:757:19 | ControlFlowNode for arg2 | classes.py:747:23:747:27 | SSA variable other | -| classes.py:777:23:777:27 | SSA variable other | classes.py:778:15:778:19 | ControlFlowNode for other | -| classes.py:793:17:793:20 | ControlFlowNode for arg2 | classes.py:777:23:777:27 | SSA variable other | -| classes.py:798:26:798:30 | SSA variable other | classes.py:799:15:799:19 | ControlFlowNode for other | -| classes.py:808:20:808:23 | ControlFlowNode for arg2 | classes.py:798:26:798:30 | SSA variable other | -| classes.py:813:26:813:30 | SSA variable other | classes.py:814:15:814:19 | ControlFlowNode for other | -| classes.py:823:20:823:23 | ControlFlowNode for arg2 | classes.py:813:26:813:30 | SSA variable other | -| classes.py:828:23:828:27 | SSA variable other | classes.py:829:15:829:19 | ControlFlowNode for other | -| classes.py:838:16:838:19 | ControlFlowNode for arg2 | classes.py:828:23:828:27 | SSA variable other | -| classes.py:843:23:843:27 | SSA variable other | classes.py:844:15:844:19 | ControlFlowNode for other | -| classes.py:853:16:853:19 | ControlFlowNode for arg2 | classes.py:843:23:843:27 | SSA variable other | -| classes.py:858:22:858:26 | SSA variable other | classes.py:859:15:859:19 | ControlFlowNode for other | -| classes.py:868:15:868:18 | ControlFlowNode for arg2 | classes.py:858:22:858:26 | SSA variable other | +| classes.py:555:27:555:29 | ControlFlowNode for key | classes.py:556:15:556:17 | ControlFlowNode for key | +| classes.py:565:18:565:21 | ControlFlowNode for arg2 | classes.py:555:27:555:29 | ControlFlowNode for key | +| classes.py:570:27:570:29 | ControlFlowNode for key | classes.py:572:15:572:17 | ControlFlowNode for key | +| classes.py:581:18:581:21 | ControlFlowNode for arg2 | classes.py:570:27:570:29 | ControlFlowNode for key | +| classes.py:586:27:586:29 | ControlFlowNode for key | classes.py:587:15:587:17 | ControlFlowNode for key | +| classes.py:595:22:595:25 | ControlFlowNode for arg2 | classes.py:586:27:586:29 | ControlFlowNode for key | +| classes.py:657:23:657:27 | ControlFlowNode for other | classes.py:658:15:658:19 | ControlFlowNode for other | +| classes.py:667:16:667:19 | ControlFlowNode for arg2 | classes.py:657:23:657:27 | ControlFlowNode for other | +| classes.py:672:23:672:27 | ControlFlowNode for other | classes.py:673:15:673:19 | ControlFlowNode for other | +| classes.py:682:16:682:19 | ControlFlowNode for arg2 | classes.py:672:23:672:27 | ControlFlowNode for other | +| classes.py:687:23:687:27 | ControlFlowNode for other | classes.py:688:15:688:19 | ControlFlowNode for other | +| classes.py:697:16:697:19 | ControlFlowNode for arg2 | classes.py:687:23:687:27 | ControlFlowNode for other | +| classes.py:702:26:702:30 | ControlFlowNode for other | classes.py:703:15:703:19 | ControlFlowNode for other | +| classes.py:712:19:712:22 | ControlFlowNode for arg2 | classes.py:702:26:702:30 | ControlFlowNode for other | +| classes.py:717:27:717:31 | ControlFlowNode for other | classes.py:718:15:718:19 | ControlFlowNode for other | +| classes.py:727:20:727:23 | ControlFlowNode for arg2 | classes.py:717:27:717:31 | ControlFlowNode for other | +| classes.py:732:28:732:32 | ControlFlowNode for other | classes.py:733:15:733:19 | ControlFlowNode for other | +| classes.py:742:22:742:25 | ControlFlowNode for arg2 | classes.py:732:28:732:32 | ControlFlowNode for other | +| classes.py:747:23:747:27 | ControlFlowNode for other | classes.py:748:15:748:19 | ControlFlowNode for other | +| classes.py:757:16:757:19 | ControlFlowNode for arg2 | classes.py:747:23:747:27 | ControlFlowNode for other | +| classes.py:777:23:777:27 | ControlFlowNode for other | classes.py:778:15:778:19 | ControlFlowNode for other | +| classes.py:793:17:793:20 | ControlFlowNode for arg2 | classes.py:777:23:777:27 | ControlFlowNode for other | +| classes.py:798:26:798:30 | ControlFlowNode for other | classes.py:799:15:799:19 | ControlFlowNode for other | +| classes.py:808:20:808:23 | ControlFlowNode for arg2 | classes.py:798:26:798:30 | ControlFlowNode for other | +| classes.py:813:26:813:30 | ControlFlowNode for other | classes.py:814:15:814:19 | ControlFlowNode for other | +| classes.py:823:20:823:23 | ControlFlowNode for arg2 | classes.py:813:26:813:30 | ControlFlowNode for other | +| classes.py:828:23:828:27 | ControlFlowNode for other | classes.py:829:15:829:19 | ControlFlowNode for other | +| classes.py:838:16:838:19 | ControlFlowNode for arg2 | classes.py:828:23:828:27 | ControlFlowNode for other | +| classes.py:843:23:843:27 | ControlFlowNode for other | classes.py:844:15:844:19 | ControlFlowNode for other | +| classes.py:853:16:853:19 | ControlFlowNode for arg2 | classes.py:843:23:843:27 | ControlFlowNode for other | +| classes.py:858:22:858:26 | ControlFlowNode for other | classes.py:859:15:859:19 | ControlFlowNode for other | +| classes.py:868:15:868:18 | ControlFlowNode for arg2 | classes.py:858:22:858:26 | ControlFlowNode for other | nodes -| argumentPassing.py:66:5:66:5 | SSA variable b | semmle.label | SSA variable b | +| argumentPassing.py:66:5:66:5 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:76:11:76:11 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:94:28:94:31 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| argumentPassing.py:97:25:97:25 | SSA variable b | semmle.label | SSA variable b | +| argumentPassing.py:97:25:97:25 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:99:11:99:11 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:104:25:104:28 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | | argumentPassing.py:105:27:105:30 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| argumentPassing.py:109:30:109:30 | SSA variable b | semmle.label | SSA variable b | +| argumentPassing.py:109:30:109:30 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:111:11:111:11 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:117:29:117:32 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | | argumentPassing.py:120:5:120:70 | KwUnpacked b | semmle.label | KwUnpacked b | | argumentPassing.py:120:29:120:39 | ControlFlowNode for Dict [Dictionary element at key b] | semmle.label | ControlFlowNode for Dict [Dictionary element at key b] | | argumentPassing.py:120:35:120:38 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| argumentPassing.py:123:36:123:36 | SSA variable b | semmle.label | SSA variable b | +| argumentPassing.py:123:36:123:36 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:125:11:125:11 | ControlFlowNode for b | semmle.label | ControlFlowNode for b | | argumentPassing.py:133:30:133:33 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| argumentPassing.py:138:29:138:34 | SSA variable kwargs [Dictionary element at key bar] | semmle.label | SSA variable kwargs [Dictionary element at key bar] | +| argumentPassing.py:138:29:138:34 | ControlFlowNode for kwargs [Dictionary element at key bar] | semmle.label | ControlFlowNode for kwargs [Dictionary element at key bar] | | argumentPassing.py:140:5:140:26 | KwUnpacked bar | semmle.label | KwUnpacked bar | | argumentPassing.py:140:20:140:25 | ControlFlowNode for kwargs [Dictionary element at key bar] | semmle.label | ControlFlowNode for kwargs [Dictionary element at key bar] | -| argumentPassing.py:145:18:145:20 | SSA variable bar | semmle.label | SSA variable bar | +| argumentPassing.py:145:18:145:20 | ControlFlowNode for bar | semmle.label | ControlFlowNode for bar | | argumentPassing.py:146:11:146:13 | ControlFlowNode for bar | semmle.label | ControlFlowNode for bar | | argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key bar] | semmle.label | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key bar] | | argumentPassing.py:160:36:160:39 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:555:27:555:29 | SSA variable key | semmle.label | SSA variable key | +| classes.py:555:27:555:29 | ControlFlowNode for key | semmle.label | ControlFlowNode for key | | classes.py:556:15:556:17 | ControlFlowNode for key | semmle.label | ControlFlowNode for key | | classes.py:565:18:565:21 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:570:27:570:29 | SSA variable key | semmle.label | SSA variable key | +| classes.py:570:27:570:29 | ControlFlowNode for key | semmle.label | ControlFlowNode for key | | classes.py:572:15:572:17 | ControlFlowNode for key | semmle.label | ControlFlowNode for key | | classes.py:581:18:581:21 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:586:27:586:29 | SSA variable key | semmle.label | SSA variable key | +| classes.py:586:27:586:29 | ControlFlowNode for key | semmle.label | ControlFlowNode for key | | classes.py:587:15:587:17 | ControlFlowNode for key | semmle.label | ControlFlowNode for key | | classes.py:595:22:595:25 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:657:23:657:27 | SSA variable other | semmle.label | SSA variable other | +| classes.py:657:23:657:27 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:658:15:658:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:667:16:667:19 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:672:23:672:27 | SSA variable other | semmle.label | SSA variable other | +| classes.py:672:23:672:27 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:673:15:673:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:682:16:682:19 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:687:23:687:27 | SSA variable other | semmle.label | SSA variable other | +| classes.py:687:23:687:27 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:688:15:688:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:697:16:697:19 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:702:26:702:30 | SSA variable other | semmle.label | SSA variable other | +| classes.py:702:26:702:30 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:703:15:703:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:712:19:712:22 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:717:27:717:31 | SSA variable other | semmle.label | SSA variable other | +| classes.py:717:27:717:31 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:718:15:718:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:727:20:727:23 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:732:28:732:32 | SSA variable other | semmle.label | SSA variable other | +| classes.py:732:28:732:32 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:733:15:733:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:742:22:742:25 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:747:23:747:27 | SSA variable other | semmle.label | SSA variable other | +| classes.py:747:23:747:27 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:748:15:748:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:757:16:757:19 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:777:23:777:27 | SSA variable other | semmle.label | SSA variable other | +| classes.py:777:23:777:27 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:778:15:778:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:793:17:793:20 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:798:26:798:30 | SSA variable other | semmle.label | SSA variable other | +| classes.py:798:26:798:30 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:799:15:799:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:808:20:808:23 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:813:26:813:30 | SSA variable other | semmle.label | SSA variable other | +| classes.py:813:26:813:30 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:814:15:814:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:823:20:823:23 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:828:23:828:27 | SSA variable other | semmle.label | SSA variable other | +| classes.py:828:23:828:27 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:829:15:829:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:838:16:838:19 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:843:23:843:27 | SSA variable other | semmle.label | SSA variable other | +| classes.py:843:23:843:27 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:844:15:844:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:853:16:853:19 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | -| classes.py:858:22:858:26 | SSA variable other | semmle.label | SSA variable other | +| classes.py:858:22:858:26 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:859:15:859:19 | ControlFlowNode for other | semmle.label | ControlFlowNode for other | | classes.py:868:15:868:18 | ControlFlowNode for arg2 | semmle.label | ControlFlowNode for arg2 | #select diff --git a/python/ql/test/experimental/dataflow/coverage/argumentRouting3.expected b/python/ql/test/experimental/dataflow/coverage/argumentRouting3.expected index 0a5ed9061831..0d359646a7e7 100644 --- a/python/ql/test/experimental/dataflow/coverage/argumentRouting3.expected +++ b/python/ql/test/experimental/dataflow/coverage/argumentRouting3.expected @@ -1,33 +1,33 @@ edges -| argumentPassing.py:68:5:68:5 | SSA variable c | argumentPassing.py:77:11:77:11 | ControlFlowNode for c | -| argumentPassing.py:94:34:94:37 | ControlFlowNode for arg3 | argumentPassing.py:68:5:68:5 | SSA variable c | -| argumentPassing.py:109:33:109:33 | SSA variable c | argumentPassing.py:112:11:112:11 | ControlFlowNode for c | -| argumentPassing.py:117:37:117:40 | ControlFlowNode for arg3 | argumentPassing.py:109:33:109:33 | SSA variable c | -| argumentPassing.py:119:5:119:54 | KwUnpacked c | argumentPassing.py:109:33:109:33 | SSA variable c | +| argumentPassing.py:68:5:68:5 | ControlFlowNode for c | argumentPassing.py:77:11:77:11 | ControlFlowNode for c | +| argumentPassing.py:94:34:94:37 | ControlFlowNode for arg3 | argumentPassing.py:68:5:68:5 | ControlFlowNode for c | +| argumentPassing.py:109:33:109:33 | ControlFlowNode for c | argumentPassing.py:112:11:112:11 | ControlFlowNode for c | +| argumentPassing.py:117:37:117:40 | ControlFlowNode for arg3 | argumentPassing.py:109:33:109:33 | ControlFlowNode for c | +| argumentPassing.py:119:5:119:54 | KwUnpacked c | argumentPassing.py:109:33:109:33 | ControlFlowNode for c | | argumentPassing.py:119:35:119:45 | ControlFlowNode for Dict [Dictionary element at key c] | argumentPassing.py:119:5:119:54 | KwUnpacked c | | argumentPassing.py:119:41:119:44 | ControlFlowNode for arg3 | argumentPassing.py:119:35:119:45 | ControlFlowNode for Dict [Dictionary element at key c] | -| argumentPassing.py:120:5:120:70 | KwUnpacked c | argumentPassing.py:109:33:109:33 | SSA variable c | +| argumentPassing.py:120:5:120:70 | KwUnpacked c | argumentPassing.py:109:33:109:33 | ControlFlowNode for c | | argumentPassing.py:120:44:120:54 | ControlFlowNode for Dict [Dictionary element at key c] | argumentPassing.py:120:5:120:70 | KwUnpacked c | | argumentPassing.py:120:50:120:53 | ControlFlowNode for arg3 | argumentPassing.py:120:44:120:54 | ControlFlowNode for Dict [Dictionary element at key c] | -| argumentPassing.py:123:44:123:44 | SSA variable c | argumentPassing.py:126:11:126:11 | ControlFlowNode for c | -| argumentPassing.py:134:5:134:41 | KwUnpacked c | argumentPassing.py:123:44:123:44 | SSA variable c | +| argumentPassing.py:123:44:123:44 | ControlFlowNode for c | argumentPassing.py:126:11:126:11 | ControlFlowNode for c | +| argumentPassing.py:134:5:134:41 | KwUnpacked c | argumentPassing.py:123:44:123:44 | ControlFlowNode for c | | argumentPassing.py:134:30:134:40 | ControlFlowNode for Dict [Dictionary element at key c] | argumentPassing.py:134:5:134:41 | KwUnpacked c | | argumentPassing.py:134:36:134:39 | ControlFlowNode for arg3 | argumentPassing.py:134:30:134:40 | ControlFlowNode for Dict [Dictionary element at key c] | -| argumentPassing.py:138:29:138:34 | SSA variable kwargs [Dictionary element at key baz] | argumentPassing.py:140:5:140:26 | KwOverflowNode for grab_bar_baz() [Dictionary element at key baz] | -| argumentPassing.py:140:5:140:26 | KwOverflowNode for grab_bar_baz() [Dictionary element at key baz] | argumentPassing.py:145:25:145:30 | SSA variable kwargs [Dictionary element at key baz] | -| argumentPassing.py:145:25:145:30 | SSA variable kwargs [Dictionary element at key baz] | argumentPassing.py:151:16:151:21 | ControlFlowNode for kwargs [Dictionary element at key baz] | -| argumentPassing.py:151:5:151:22 | KwUnpacked baz | argumentPassing.py:154:14:154:16 | SSA variable baz | +| argumentPassing.py:138:29:138:34 | ControlFlowNode for kwargs [Dictionary element at key baz] | argumentPassing.py:140:5:140:26 | KwOverflowNode for grab_bar_baz() [Dictionary element at key baz] | +| argumentPassing.py:140:5:140:26 | KwOverflowNode for grab_bar_baz() [Dictionary element at key baz] | argumentPassing.py:145:25:145:30 | ControlFlowNode for kwargs [Dictionary element at key baz] | +| argumentPassing.py:145:25:145:30 | ControlFlowNode for kwargs [Dictionary element at key baz] | argumentPassing.py:151:16:151:21 | ControlFlowNode for kwargs [Dictionary element at key baz] | +| argumentPassing.py:151:5:151:22 | KwUnpacked baz | argumentPassing.py:154:14:154:16 | ControlFlowNode for baz | | argumentPassing.py:151:16:151:21 | ControlFlowNode for kwargs [Dictionary element at key baz] | argumentPassing.py:151:5:151:22 | KwUnpacked baz | -| argumentPassing.py:154:14:154:16 | SSA variable baz | argumentPassing.py:155:11:155:13 | ControlFlowNode for baz | -| argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key baz] | argumentPassing.py:138:29:138:34 | SSA variable kwargs [Dictionary element at key baz] | +| argumentPassing.py:154:14:154:16 | ControlFlowNode for baz | argumentPassing.py:155:11:155:13 | ControlFlowNode for baz | +| argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key baz] | argumentPassing.py:138:29:138:34 | ControlFlowNode for kwargs [Dictionary element at key baz] | | argumentPassing.py:160:26:160:29 | ControlFlowNode for arg3 | argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key baz] | -| classes.py:570:32:570:36 | SSA variable value | classes.py:571:15:571:19 | ControlFlowNode for value | -| classes.py:581:26:581:29 | ControlFlowNode for arg3 | classes.py:570:32:570:36 | SSA variable value | +| classes.py:570:32:570:36 | ControlFlowNode for value | classes.py:571:15:571:19 | ControlFlowNode for value | +| classes.py:581:26:581:29 | ControlFlowNode for arg3 | classes.py:570:32:570:36 | ControlFlowNode for value | nodes -| argumentPassing.py:68:5:68:5 | SSA variable c | semmle.label | SSA variable c | +| argumentPassing.py:68:5:68:5 | ControlFlowNode for c | semmle.label | ControlFlowNode for c | | argumentPassing.py:77:11:77:11 | ControlFlowNode for c | semmle.label | ControlFlowNode for c | | argumentPassing.py:94:34:94:37 | ControlFlowNode for arg3 | semmle.label | ControlFlowNode for arg3 | -| argumentPassing.py:109:33:109:33 | SSA variable c | semmle.label | SSA variable c | +| argumentPassing.py:109:33:109:33 | ControlFlowNode for c | semmle.label | ControlFlowNode for c | | argumentPassing.py:112:11:112:11 | ControlFlowNode for c | semmle.label | ControlFlowNode for c | | argumentPassing.py:117:37:117:40 | ControlFlowNode for arg3 | semmle.label | ControlFlowNode for arg3 | | argumentPassing.py:119:5:119:54 | KwUnpacked c | semmle.label | KwUnpacked c | @@ -36,21 +36,21 @@ nodes | argumentPassing.py:120:5:120:70 | KwUnpacked c | semmle.label | KwUnpacked c | | argumentPassing.py:120:44:120:54 | ControlFlowNode for Dict [Dictionary element at key c] | semmle.label | ControlFlowNode for Dict [Dictionary element at key c] | | argumentPassing.py:120:50:120:53 | ControlFlowNode for arg3 | semmle.label | ControlFlowNode for arg3 | -| argumentPassing.py:123:44:123:44 | SSA variable c | semmle.label | SSA variable c | +| argumentPassing.py:123:44:123:44 | ControlFlowNode for c | semmle.label | ControlFlowNode for c | | argumentPassing.py:126:11:126:11 | ControlFlowNode for c | semmle.label | ControlFlowNode for c | | argumentPassing.py:134:5:134:41 | KwUnpacked c | semmle.label | KwUnpacked c | | argumentPassing.py:134:30:134:40 | ControlFlowNode for Dict [Dictionary element at key c] | semmle.label | ControlFlowNode for Dict [Dictionary element at key c] | | argumentPassing.py:134:36:134:39 | ControlFlowNode for arg3 | semmle.label | ControlFlowNode for arg3 | -| argumentPassing.py:138:29:138:34 | SSA variable kwargs [Dictionary element at key baz] | semmle.label | SSA variable kwargs [Dictionary element at key baz] | +| argumentPassing.py:138:29:138:34 | ControlFlowNode for kwargs [Dictionary element at key baz] | semmle.label | ControlFlowNode for kwargs [Dictionary element at key baz] | | argumentPassing.py:140:5:140:26 | KwOverflowNode for grab_bar_baz() [Dictionary element at key baz] | semmle.label | KwOverflowNode for grab_bar_baz() [Dictionary element at key baz] | -| argumentPassing.py:145:25:145:30 | SSA variable kwargs [Dictionary element at key baz] | semmle.label | SSA variable kwargs [Dictionary element at key baz] | +| argumentPassing.py:145:25:145:30 | ControlFlowNode for kwargs [Dictionary element at key baz] | semmle.label | ControlFlowNode for kwargs [Dictionary element at key baz] | | argumentPassing.py:151:5:151:22 | KwUnpacked baz | semmle.label | KwUnpacked baz | | argumentPassing.py:151:16:151:21 | ControlFlowNode for kwargs [Dictionary element at key baz] | semmle.label | ControlFlowNode for kwargs [Dictionary element at key baz] | -| argumentPassing.py:154:14:154:16 | SSA variable baz | semmle.label | SSA variable baz | +| argumentPassing.py:154:14:154:16 | ControlFlowNode for baz | semmle.label | ControlFlowNode for baz | | argumentPassing.py:155:11:155:13 | ControlFlowNode for baz | semmle.label | ControlFlowNode for baz | | argumentPassing.py:160:5:160:50 | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key baz] | semmle.label | KwOverflowNode for grab_foo_bar_baz() [Dictionary element at key baz] | | argumentPassing.py:160:26:160:29 | ControlFlowNode for arg3 | semmle.label | ControlFlowNode for arg3 | -| classes.py:570:32:570:36 | SSA variable value | semmle.label | SSA variable value | +| classes.py:570:32:570:36 | ControlFlowNode for value | semmle.label | ControlFlowNode for value | | classes.py:571:15:571:19 | ControlFlowNode for value | semmle.label | ControlFlowNode for value | | classes.py:581:26:581:29 | ControlFlowNode for arg3 | semmle.label | ControlFlowNode for arg3 | #select diff --git a/python/ql/test/experimental/dataflow/coverage/argumentRouting7.expected b/python/ql/test/experimental/dataflow/coverage/argumentRouting7.expected index 78b11fa3f9e3..7f57aa3e4353 100644 --- a/python/ql/test/experimental/dataflow/coverage/argumentRouting7.expected +++ b/python/ql/test/experimental/dataflow/coverage/argumentRouting7.expected @@ -1,11 +1,11 @@ edges -| argumentPassing.py:73:7:73:7 | SSA variable g [Dictionary element at key g] | argumentPassing.py:82:15:82:15 | ControlFlowNode for g [Dictionary element at key g] | +| argumentPassing.py:73:7:73:7 | ControlFlowNode for g [Dictionary element at key g] | argumentPassing.py:82:15:82:15 | ControlFlowNode for g [Dictionary element at key g] | | argumentPassing.py:82:15:82:15 | ControlFlowNode for g [Dictionary element at key g] | argumentPassing.py:82:15:82:20 | ControlFlowNode for Subscript | -| argumentPassing.py:89:5:89:81 | KwOverflowNode for argument_passing() [Dictionary element at key g] | argumentPassing.py:73:7:73:7 | SSA variable g [Dictionary element at key g] | +| argumentPassing.py:89:5:89:81 | KwOverflowNode for argument_passing() [Dictionary element at key g] | argumentPassing.py:73:7:73:7 | ControlFlowNode for g [Dictionary element at key g] | | argumentPassing.py:89:59:89:80 | ControlFlowNode for Dict [Dictionary element at key g] | argumentPassing.py:89:5:89:81 | KwOverflowNode for argument_passing() [Dictionary element at key g] | | argumentPassing.py:89:76:89:79 | ControlFlowNode for arg7 | argumentPassing.py:89:59:89:80 | ControlFlowNode for Dict [Dictionary element at key g] | nodes -| argumentPassing.py:73:7:73:7 | SSA variable g [Dictionary element at key g] | semmle.label | SSA variable g [Dictionary element at key g] | +| argumentPassing.py:73:7:73:7 | ControlFlowNode for g [Dictionary element at key g] | semmle.label | ControlFlowNode for g [Dictionary element at key g] | | argumentPassing.py:82:15:82:15 | ControlFlowNode for g [Dictionary element at key g] | semmle.label | ControlFlowNode for g [Dictionary element at key g] | | argumentPassing.py:82:15:82:20 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | | argumentPassing.py:89:5:89:81 | KwOverflowNode for argument_passing() [Dictionary element at key g] | semmle.label | KwOverflowNode for argument_passing() [Dictionary element at key g] | diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected index 7cf4ac4b6b31..a5477d5667ee 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected @@ -1,39 +1,39 @@ | classes.py:45:16:45:35 | ControlFlowNode for Attribute() | classes.py:45:16:45:35 | ControlFlowNode for Attribute() | -| classes.py:60:17:60:27 | [pre objCreate] ControlFlowNode for With_init() | classes.py:54:18:54:21 | SSA variable self | +| classes.py:60:17:60:27 | [pre objCreate] ControlFlowNode for With_init() | classes.py:54:18:54:21 | ControlFlowNode for self | | classes.py:242:9:242:24 | ControlFlowNode for set() | classes.py:242:9:242:24 | ControlFlowNode for set() | | classes.py:247:9:247:30 | ControlFlowNode for frozenset() | classes.py:247:9:247:30 | ControlFlowNode for frozenset() | | classes.py:252:9:252:28 | ControlFlowNode for dict() | classes.py:252:9:252:28 | ControlFlowNode for dict() | -| classes.py:565:5:565:16 | ControlFlowNode for with_getitem | classes.py:555:21:555:24 | SSA variable self | -| classes.py:565:18:565:21 | ControlFlowNode for arg2 | classes.py:555:27:555:29 | SSA variable key | -| classes.py:581:5:581:16 | ControlFlowNode for with_setitem | classes.py:570:21:570:24 | SSA variable self | -| classes.py:581:18:581:21 | ControlFlowNode for arg2 | classes.py:570:27:570:29 | SSA variable key | -| classes.py:581:26:581:29 | ControlFlowNode for arg3 | classes.py:570:32:570:36 | SSA variable value | -| classes.py:595:9:595:20 | ControlFlowNode for with_delitem | classes.py:586:21:586:24 | SSA variable self | -| classes.py:595:22:595:25 | ControlFlowNode for arg2 | classes.py:586:27:586:29 | SSA variable key | +| classes.py:565:5:565:16 | ControlFlowNode for with_getitem | classes.py:555:21:555:24 | ControlFlowNode for self | +| classes.py:565:18:565:21 | ControlFlowNode for arg2 | classes.py:555:27:555:29 | ControlFlowNode for key | +| classes.py:581:5:581:16 | ControlFlowNode for with_setitem | classes.py:570:21:570:24 | ControlFlowNode for self | +| classes.py:581:18:581:21 | ControlFlowNode for arg2 | classes.py:570:27:570:29 | ControlFlowNode for key | +| classes.py:581:26:581:29 | ControlFlowNode for arg3 | classes.py:570:32:570:36 | ControlFlowNode for value | +| classes.py:595:9:595:20 | ControlFlowNode for with_delitem | classes.py:586:21:586:24 | ControlFlowNode for self | +| classes.py:595:22:595:25 | ControlFlowNode for arg2 | classes.py:586:27:586:29 | ControlFlowNode for key | | classes.py:618:16:618:28 | ControlFlowNode for Attribute() | classes.py:618:16:618:28 | ControlFlowNode for Attribute() | -| classes.py:667:5:667:12 | ControlFlowNode for with_add | classes.py:657:17:657:20 | SSA variable self | -| classes.py:667:16:667:19 | ControlFlowNode for arg2 | classes.py:657:23:657:27 | SSA variable other | -| classes.py:682:5:682:12 | ControlFlowNode for with_sub | classes.py:672:17:672:20 | SSA variable self | -| classes.py:682:16:682:19 | ControlFlowNode for arg2 | classes.py:672:23:672:27 | SSA variable other | -| classes.py:697:5:697:12 | ControlFlowNode for with_mul | classes.py:687:17:687:20 | SSA variable self | -| classes.py:697:16:697:19 | ControlFlowNode for arg2 | classes.py:687:23:687:27 | SSA variable other | -| classes.py:712:5:712:15 | ControlFlowNode for with_matmul | classes.py:702:20:702:23 | SSA variable self | -| classes.py:712:19:712:22 | ControlFlowNode for arg2 | classes.py:702:26:702:30 | SSA variable other | -| classes.py:727:5:727:16 | ControlFlowNode for with_truediv | classes.py:717:21:717:24 | SSA variable self | -| classes.py:727:20:727:23 | ControlFlowNode for arg2 | classes.py:717:27:717:31 | SSA variable other | -| classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | classes.py:732:22:732:25 | SSA variable self | -| classes.py:742:22:742:25 | ControlFlowNode for arg2 | classes.py:732:28:732:32 | SSA variable other | -| classes.py:757:5:757:12 | ControlFlowNode for with_mod | classes.py:747:17:747:20 | SSA variable self | -| classes.py:757:16:757:19 | ControlFlowNode for arg2 | classes.py:747:23:747:27 | SSA variable other | -| classes.py:793:5:793:12 | ControlFlowNode for with_pow | classes.py:777:17:777:20 | SSA variable self | -| classes.py:793:17:793:20 | ControlFlowNode for arg2 | classes.py:777:23:777:27 | SSA variable other | -| classes.py:808:5:808:15 | ControlFlowNode for with_lshift | classes.py:798:20:798:23 | SSA variable self | -| classes.py:808:20:808:23 | ControlFlowNode for arg2 | classes.py:798:26:798:30 | SSA variable other | -| classes.py:823:5:823:15 | ControlFlowNode for with_rshift | classes.py:813:20:813:23 | SSA variable self | -| classes.py:823:20:823:23 | ControlFlowNode for arg2 | classes.py:813:26:813:30 | SSA variable other | -| classes.py:838:5:838:12 | ControlFlowNode for with_and | classes.py:828:17:828:20 | SSA variable self | -| classes.py:838:16:838:19 | ControlFlowNode for arg2 | classes.py:828:23:828:27 | SSA variable other | -| classes.py:853:5:853:12 | ControlFlowNode for with_xor | classes.py:843:17:843:20 | SSA variable self | -| classes.py:853:16:853:19 | ControlFlowNode for arg2 | classes.py:843:23:843:27 | SSA variable other | -| classes.py:868:5:868:11 | ControlFlowNode for with_or | classes.py:858:16:858:19 | SSA variable self | -| classes.py:868:15:868:18 | ControlFlowNode for arg2 | classes.py:858:22:858:26 | SSA variable other | +| classes.py:667:5:667:12 | ControlFlowNode for with_add | classes.py:657:17:657:20 | ControlFlowNode for self | +| classes.py:667:16:667:19 | ControlFlowNode for arg2 | classes.py:657:23:657:27 | ControlFlowNode for other | +| classes.py:682:5:682:12 | ControlFlowNode for with_sub | classes.py:672:17:672:20 | ControlFlowNode for self | +| classes.py:682:16:682:19 | ControlFlowNode for arg2 | classes.py:672:23:672:27 | ControlFlowNode for other | +| classes.py:697:5:697:12 | ControlFlowNode for with_mul | classes.py:687:17:687:20 | ControlFlowNode for self | +| classes.py:697:16:697:19 | ControlFlowNode for arg2 | classes.py:687:23:687:27 | ControlFlowNode for other | +| classes.py:712:5:712:15 | ControlFlowNode for with_matmul | classes.py:702:20:702:23 | ControlFlowNode for self | +| classes.py:712:19:712:22 | ControlFlowNode for arg2 | classes.py:702:26:702:30 | ControlFlowNode for other | +| classes.py:727:5:727:16 | ControlFlowNode for with_truediv | classes.py:717:21:717:24 | ControlFlowNode for self | +| classes.py:727:20:727:23 | ControlFlowNode for arg2 | classes.py:717:27:717:31 | ControlFlowNode for other | +| classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | classes.py:732:22:732:25 | ControlFlowNode for self | +| classes.py:742:22:742:25 | ControlFlowNode for arg2 | classes.py:732:28:732:32 | ControlFlowNode for other | +| classes.py:757:5:757:12 | ControlFlowNode for with_mod | classes.py:747:17:747:20 | ControlFlowNode for self | +| classes.py:757:16:757:19 | ControlFlowNode for arg2 | classes.py:747:23:747:27 | ControlFlowNode for other | +| classes.py:793:5:793:12 | ControlFlowNode for with_pow | classes.py:777:17:777:20 | ControlFlowNode for self | +| classes.py:793:17:793:20 | ControlFlowNode for arg2 | classes.py:777:23:777:27 | ControlFlowNode for other | +| classes.py:808:5:808:15 | ControlFlowNode for with_lshift | classes.py:798:20:798:23 | ControlFlowNode for self | +| classes.py:808:20:808:23 | ControlFlowNode for arg2 | classes.py:798:26:798:30 | ControlFlowNode for other | +| classes.py:823:5:823:15 | ControlFlowNode for with_rshift | classes.py:813:20:813:23 | ControlFlowNode for self | +| classes.py:823:20:823:23 | ControlFlowNode for arg2 | classes.py:813:26:813:30 | ControlFlowNode for other | +| classes.py:838:5:838:12 | ControlFlowNode for with_and | classes.py:828:17:828:20 | ControlFlowNode for self | +| classes.py:838:16:838:19 | ControlFlowNode for arg2 | classes.py:828:23:828:27 | ControlFlowNode for other | +| classes.py:853:5:853:12 | ControlFlowNode for with_xor | classes.py:843:17:843:20 | ControlFlowNode for self | +| classes.py:853:16:853:19 | ControlFlowNode for arg2 | classes.py:843:23:843:27 | ControlFlowNode for other | +| classes.py:868:5:868:11 | ControlFlowNode for with_or | classes.py:858:16:858:19 | ControlFlowNode for self | +| classes.py:868:15:868:18 | ControlFlowNode for arg2 | classes.py:858:22:858:26 | ControlFlowNode for other | diff --git a/python/ql/test/experimental/dataflow/coverage/localFlow.expected b/python/ql/test/experimental/dataflow/coverage/localFlow.expected index 9e78d33651e3..f604e3d7b181 100644 --- a/python/ql/test/experimental/dataflow/coverage/localFlow.expected +++ b/python/ql/test/experimental/dataflow/coverage/localFlow.expected @@ -9,6 +9,7 @@ | test.py:187:1:187:53 | GSSA Variable SOURCE | test.py:188:25:188:30 | ControlFlowNode for SOURCE | | test.py:188:5:188:5 | SSA variable x | test.py:189:10:189:10 | ControlFlowNode for x | | test.py:188:9:188:68 | ControlFlowNode for ListComp | test.py:188:5:188:5 | SSA variable x | +| test.py:188:9:188:68 | SSA variable .0 | test.py:188:9:188:68 | ControlFlowNode for .0 | | test.py:188:16:188:16 | SSA variable v | test.py:188:45:188:45 | ControlFlowNode for v | | test.py:188:40:188:40 | SSA variable u | test.py:188:56:188:56 | ControlFlowNode for u | | test.py:188:51:188:51 | SSA variable z | test.py:188:67:188:67 | ControlFlowNode for z | diff --git a/python/ql/test/experimental/dataflow/fieldflow/allLocalFlow.expected b/python/ql/test/experimental/dataflow/fieldflow/allLocalFlow.expected index ad215a374daa..e288b7fd157f 100644 --- a/python/ql/test/experimental/dataflow/fieldflow/allLocalFlow.expected +++ b/python/ql/test/experimental/dataflow/fieldflow/allLocalFlow.expected @@ -5,19 +5,25 @@ | examples.py:6:7:6:11 | GSSA Variable MyObj | examples.py:25:9:25:13 | ControlFlowNode for MyObj | | examples.py:6:13:6:18 | ControlFlowNode for object | examples.py:11:17:11:22 | ControlFlowNode for object | | examples.py:7:5:7:28 | ControlFlowNode for FunctionExpr | examples.py:7:9:7:16 | SSA variable __init__ | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:7:18:7:21 | SSA variable self | | examples.py:7:18:7:21 | SSA variable self | examples.py:8:9:8:12 | ControlFlowNode for self | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:7:24:7:26 | SSA variable foo | | examples.py:7:24:7:26 | SSA variable foo | examples.py:8:20:8:22 | ControlFlowNode for foo | | examples.py:11:1:11:24 | ControlFlowNode for ClassExpr | examples.py:11:7:11:15 | GSSA Variable NestedObj | | examples.py:11:7:11:15 | GSSA Variable NestedObj | examples.py:33:5:33:13 | ControlFlowNode for NestedObj | | examples.py:12:5:12:23 | ControlFlowNode for FunctionExpr | examples.py:12:9:12:16 | SSA variable __init__ | | examples.py:12:5:12:23 | GSSA Variable MyObj | examples.py:13:20:13:24 | ControlFlowNode for MyObj | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:12:18:12:21 | SSA variable self | | examples.py:12:18:12:21 | SSA variable self | examples.py:13:9:13:12 | ControlFlowNode for self | | examples.py:15:5:15:21 | ControlFlowNode for FunctionExpr | examples.py:15:9:15:14 | SSA variable getObj | +| examples.py:15:16:15:19 | ControlFlowNode for self | examples.py:15:16:15:19 | SSA variable self | | examples.py:15:16:15:19 | SSA variable self | examples.py:16:16:16:19 | ControlFlowNode for self | | examples.py:20:1:20:19 | ControlFlowNode for FunctionExpr | examples.py:20:5:20:10 | GSSA Variable setFoo | | examples.py:20:1:20:19 | GSSA Variable SINK_F | examples.py:21:5:21:10 | ControlFlowNode for SINK_F | | examples.py:20:5:20:10 | GSSA Variable setFoo | examples.py:27:1:27:6 | ControlFlowNode for setFoo | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:20:12:20:14 | SSA variable obj | | examples.py:20:12:20:14 | SSA variable obj | examples.py:21:12:21:14 | ControlFlowNode for obj | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:20:17:20:17 | SSA variable x | | examples.py:20:17:20:17 | SSA variable x | examples.py:22:15:22:15 | ControlFlowNode for x | | examples.py:21:12:21:14 | ControlFlowNode for obj | examples.py:22:5:22:7 | ControlFlowNode for obj | | examples.py:21:12:21:14 | [post read] ControlFlowNode for obj | examples.py:22:5:22:7 | ControlFlowNode for obj | @@ -54,6 +60,7 @@ | examples.py:53:1:53:30 | ControlFlowNode for FunctionExpr | examples.py:53:5:53:26 | GSSA Variable fields_with_local_flow | | examples.py:53:1:53:30 | GSSA Variable MyObj | examples.py:54:11:54:15 | ControlFlowNode for MyObj | | examples.py:53:5:53:26 | GSSA Variable fields_with_local_flow | examples.py:59:6:59:27 | ControlFlowNode for fields_with_local_flow | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:53:28:53:28 | SSA variable x | | examples.py:53:28:53:28 | SSA variable x | examples.py:54:17:54:17 | ControlFlowNode for x | | examples.py:54:5:54:7 | SSA variable obj | examples.py:55:9:55:11 | ControlFlowNode for obj | | examples.py:54:11:54:18 | ControlFlowNode for MyObj() | examples.py:54:5:54:7 | SSA variable obj | @@ -62,6 +69,7 @@ | test.py:2:13:2:26 | ControlFlowNode for Str | test.py:2:1:2:9 | GSSA Variable NONSOURCE | | test.py:3:10:3:17 | ControlFlowNode for Str | test.py:3:1:3:6 | GSSA Variable SOURCE | | test.py:6:1:6:17 | ControlFlowNode for FunctionExpr | test.py:6:5:6:13 | GSSA Variable is_source | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | | test.py:6:15:6:15 | SSA variable x | test.py:7:12:7:12 | ControlFlowNode for x | | test.py:7:12:7:12 | ControlFlowNode for x | test.py:7:29:7:29 | ControlFlowNode for x | | test.py:7:29:7:29 | ControlFlowNode for x | test.py:7:47:7:47 | ControlFlowNode for x | @@ -69,31 +77,41 @@ | test.py:7:58:7:58 | ControlFlowNode for x | test.py:7:71:7:71 | ControlFlowNode for x | | test.py:10:1:10:12 | ControlFlowNode for FunctionExpr | test.py:10:5:10:8 | GSSA Variable SINK | | test.py:10:1:10:12 | GSSA Variable is_source | test.py:11:8:11:16 | ControlFlowNode for is_source | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:10:10:10:10 | SSA variable x | | test.py:10:10:10:10 | SSA variable x | test.py:11:18:11:18 | ControlFlowNode for x | | test.py:11:18:11:18 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | | test.py:11:18:11:18 | [post arg] ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | | test.py:17:1:17:14 | ControlFlowNode for FunctionExpr | test.py:17:5:17:10 | GSSA Variable SINK_F | | test.py:17:1:17:14 | GSSA Variable is_source | test.py:18:8:18:16 | ControlFlowNode for is_source | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:17:12:17:12 | SSA variable x | | test.py:17:12:17:12 | SSA variable x | test.py:18:18:18:18 | ControlFlowNode for x | | test.py:18:18:18:18 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | | test.py:18:18:18:18 | [post arg] ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | | test.py:25:1:25:20 | ControlFlowNode for ClassExpr | test.py:25:7:25:11 | GSSA Variable MyObj | | test.py:25:13:25:18 | ControlFlowNode for object | test.py:33:17:33:22 | ControlFlowNode for object | | test.py:26:5:26:28 | ControlFlowNode for FunctionExpr | test.py:26:9:26:16 | SSA variable __init__ | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:26:18:26:21 | SSA variable self | | test.py:26:18:26:21 | SSA variable self | test.py:27:9:27:12 | ControlFlowNode for self | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:26:24:26:26 | SSA variable foo | | test.py:26:24:26:26 | SSA variable foo | test.py:27:20:27:22 | ControlFlowNode for foo | | test.py:29:5:29:26 | ControlFlowNode for FunctionExpr | test.py:29:9:29:14 | SSA variable setFoo | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:29:16:29:19 | SSA variable self | | test.py:29:16:29:19 | SSA variable self | test.py:30:9:30:12 | ControlFlowNode for self | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:29:22:29:24 | SSA variable foo | | test.py:29:22:29:24 | SSA variable foo | test.py:30:20:30:22 | ControlFlowNode for foo | | test.py:33:1:33:24 | ControlFlowNode for ClassExpr | test.py:33:7:33:15 | GSSA Variable NestedObj | | test.py:34:5:34:23 | ControlFlowNode for FunctionExpr | test.py:34:9:34:16 | SSA variable __init__ | | test.py:34:5:34:23 | GSSA Variable MyObj | test.py:35:20:35:24 | ControlFlowNode for MyObj | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:34:18:34:21 | SSA variable self | | test.py:34:18:34:21 | SSA variable self | test.py:35:9:35:12 | ControlFlowNode for self | | test.py:37:5:37:21 | ControlFlowNode for FunctionExpr | test.py:37:9:37:14 | SSA variable getObj | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:37:16:37:19 | SSA variable self | | test.py:37:16:37:19 | SSA variable self | test.py:38:16:38:19 | ControlFlowNode for self | | test.py:41:1:41:19 | ControlFlowNode for FunctionExpr | test.py:41:5:41:10 | GSSA Variable setFoo | | test.py:41:1:41:19 | GSSA Variable SINK_F | test.py:42:5:42:10 | ControlFlowNode for SINK_F | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:41:12:41:14 | SSA variable obj | | test.py:41:12:41:14 | SSA variable obj | test.py:42:12:42:14 | ControlFlowNode for obj | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:41:17:41:17 | SSA variable x | | test.py:41:17:41:17 | SSA variable x | test.py:43:15:43:15 | ControlFlowNode for x | | test.py:42:12:42:14 | ControlFlowNode for obj | test.py:43:5:43:7 | ControlFlowNode for obj | | test.py:42:12:42:14 | [post read] ControlFlowNode for obj | test.py:43:5:43:7 | ControlFlowNode for obj | @@ -148,6 +166,7 @@ | test.py:86:11:86:27 | ControlFlowNode for MyObj() | test.py:86:5:86:7 | SSA variable obj | | test.py:90:1:90:30 | ControlFlowNode for FunctionExpr | test.py:90:5:90:26 | GSSA Variable fields_with_local_flow | | test.py:90:1:90:30 | GSSA Variable MyObj | test.py:91:11:91:15 | ControlFlowNode for MyObj | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:90:28:90:28 | SSA variable x | | test.py:90:28:90:28 | SSA variable x | test.py:91:17:91:17 | ControlFlowNode for x | | test.py:91:5:91:7 | SSA variable obj | test.py:92:9:92:11 | ControlFlowNode for obj | | test.py:91:11:91:18 | ControlFlowNode for MyObj() | test.py:91:5:91:7 | SSA variable obj | diff --git a/python/ql/test/experimental/dataflow/fieldflow/globalStep.expected b/python/ql/test/experimental/dataflow/fieldflow/globalStep.expected index 62cf75349e74..1dde97a8d04e 100644 --- a/python/ql/test/experimental/dataflow/fieldflow/globalStep.expected +++ b/python/ql/test/experimental/dataflow/fieldflow/globalStep.expected @@ -52,10 +52,26 @@ | examples.py:6:13:6:18 | ControlFlowNode for object | examples.py:11:17:11:22 | ControlFlowNode for object | | examples.py:7:5:7:28 | ControlFlowNode for FunctionExpr | examples.py:7:9:7:16 | SSA variable __init__ | | examples.py:7:5:7:28 | ControlFlowNode for FunctionExpr | examples.py:7:9:7:16 | SSA variable __init__ | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:7:18:7:21 | SSA variable self | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:7:18:7:21 | SSA variable self | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:7:18:7:21 | SSA variable self | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:7:18:7:21 | SSA variable self | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:8:9:8:12 | ControlFlowNode for self | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:8:9:8:12 | ControlFlowNode for self | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:8:9:8:12 | ControlFlowNode for self | +| examples.py:7:18:7:21 | ControlFlowNode for self | examples.py:8:9:8:12 | ControlFlowNode for self | | examples.py:7:18:7:21 | SSA variable self | examples.py:8:9:8:12 | ControlFlowNode for self | | examples.py:7:18:7:21 | SSA variable self | examples.py:8:9:8:12 | ControlFlowNode for self | | examples.py:7:18:7:21 | SSA variable self | examples.py:8:9:8:12 | ControlFlowNode for self | | examples.py:7:18:7:21 | SSA variable self | examples.py:8:9:8:12 | ControlFlowNode for self | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:8:20:8:22 | ControlFlowNode for foo | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:8:20:8:22 | ControlFlowNode for foo | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:8:20:8:22 | ControlFlowNode for foo | +| examples.py:7:24:7:26 | ControlFlowNode for foo | examples.py:8:20:8:22 | ControlFlowNode for foo | | examples.py:7:24:7:26 | SSA variable foo | examples.py:8:20:8:22 | ControlFlowNode for foo | | examples.py:7:24:7:26 | SSA variable foo | examples.py:8:20:8:22 | ControlFlowNode for foo | | examples.py:7:24:7:26 | SSA variable foo | examples.py:8:20:8:22 | ControlFlowNode for foo | @@ -88,6 +104,14 @@ | examples.py:12:5:12:23 | ControlFlowNode for FunctionExpr | examples.py:12:9:12:16 | SSA variable __init__ | | examples.py:12:5:12:23 | GSSA Variable MyObj | examples.py:13:20:13:24 | ControlFlowNode for MyObj | | examples.py:12:5:12:23 | GSSA Variable MyObj | examples.py:13:20:13:24 | ControlFlowNode for MyObj | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:12:18:12:21 | SSA variable self | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:12:18:12:21 | SSA variable self | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:12:18:12:21 | SSA variable self | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:12:18:12:21 | SSA variable self | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:13:9:13:12 | ControlFlowNode for self | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:13:9:13:12 | ControlFlowNode for self | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:13:9:13:12 | ControlFlowNode for self | +| examples.py:12:18:12:21 | ControlFlowNode for self | examples.py:13:9:13:12 | ControlFlowNode for self | | examples.py:12:18:12:21 | SSA variable self | examples.py:13:9:13:12 | ControlFlowNode for self | | examples.py:12:18:12:21 | SSA variable self | examples.py:13:9:13:12 | ControlFlowNode for self | | examples.py:12:18:12:21 | SSA variable self | examples.py:13:9:13:12 | ControlFlowNode for self | @@ -102,13 +126,17 @@ | examples.py:13:9:13:12 | [post store] ControlFlowNode for self [Attribute obj] | examples.py:42:5:42:15 | ControlFlowNode for NestedObj() [Attribute obj] | | examples.py:13:20:13:30 | ControlFlowNode for MyObj() | examples.py:13:9:13:12 | [post store] ControlFlowNode for self [Attribute obj] | | examples.py:13:20:13:30 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:13:9:13:12 | [post store] ControlFlowNode for self [Attribute obj, Attribute foo] | -| examples.py:13:20:13:30 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:13:20:13:30 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:13:26:13:29 | ControlFlowNode for Str | examples.py:7:24:7:26 | SSA variable foo | -| examples.py:13:26:13:29 | ControlFlowNode for Str | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:13:20:13:30 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:13:20:13:30 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:13:26:13:29 | ControlFlowNode for Str | examples.py:7:24:7:26 | ControlFlowNode for foo | +| examples.py:13:26:13:29 | ControlFlowNode for Str | examples.py:7:24:7:26 | ControlFlowNode for foo | | examples.py:13:26:13:29 | ControlFlowNode for Str | examples.py:13:20:13:30 | ControlFlowNode for MyObj() [Attribute foo] | | examples.py:15:5:15:21 | ControlFlowNode for FunctionExpr | examples.py:15:9:15:14 | SSA variable getObj | | examples.py:15:5:15:21 | ControlFlowNode for FunctionExpr | examples.py:15:9:15:14 | SSA variable getObj | +| examples.py:15:16:15:19 | ControlFlowNode for self | examples.py:15:16:15:19 | SSA variable self | +| examples.py:15:16:15:19 | ControlFlowNode for self | examples.py:15:16:15:19 | SSA variable self | +| examples.py:15:16:15:19 | ControlFlowNode for self | examples.py:16:16:16:19 | ControlFlowNode for self | +| examples.py:15:16:15:19 | ControlFlowNode for self | examples.py:16:16:16:19 | ControlFlowNode for self | | examples.py:15:16:15:19 | SSA variable self | examples.py:16:16:16:19 | ControlFlowNode for self | | examples.py:15:16:15:19 | SSA variable self | examples.py:16:16:16:19 | ControlFlowNode for self | | examples.py:20:1:20:19 | ControlFlowNode for FunctionExpr | examples.py:20:5:20:10 | GSSA Variable setFoo | @@ -119,6 +147,20 @@ | examples.py:20:1:20:19 | GSSA Variable SINK_F | examples.py:21:5:21:10 | ControlFlowNode for SINK_F | | examples.py:20:5:20:10 | GSSA Variable setFoo | examples.py:27:1:27:6 | ControlFlowNode for setFoo | | examples.py:20:5:20:10 | GSSA Variable setFoo | examples.py:27:1:27:6 | ControlFlowNode for setFoo | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:20:12:20:14 | SSA variable obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:20:12:20:14 | SSA variable obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:20:12:20:14 | SSA variable obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:20:12:20:14 | SSA variable obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:21:12:21:14 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:21:12:21:14 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:21:12:21:14 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:21:12:21:14 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:22:5:22:7 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:22:5:22:7 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:22:5:22:7 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj | examples.py:22:5:22:7 | ControlFlowNode for obj | +| examples.py:20:12:20:14 | ControlFlowNode for obj [Attribute foo] | examples.py:20:12:20:14 | SSA variable obj [Attribute foo] | +| examples.py:20:12:20:14 | ControlFlowNode for obj [Attribute foo] | examples.py:21:12:21:14 | ControlFlowNode for obj [Attribute foo] | | examples.py:20:12:20:14 | SSA variable obj | examples.py:21:12:21:14 | ControlFlowNode for obj | | examples.py:20:12:20:14 | SSA variable obj | examples.py:21:12:21:14 | ControlFlowNode for obj | | examples.py:20:12:20:14 | SSA variable obj | examples.py:21:12:21:14 | ControlFlowNode for obj | @@ -128,6 +170,14 @@ | examples.py:20:12:20:14 | SSA variable obj | examples.py:22:5:22:7 | ControlFlowNode for obj | | examples.py:20:12:20:14 | SSA variable obj | examples.py:22:5:22:7 | ControlFlowNode for obj | | examples.py:20:12:20:14 | SSA variable obj [Attribute foo] | examples.py:21:12:21:14 | ControlFlowNode for obj [Attribute foo] | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:20:17:20:17 | SSA variable x | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:20:17:20:17 | SSA variable x | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:20:17:20:17 | SSA variable x | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:20:17:20:17 | SSA variable x | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:22:15:22:15 | ControlFlowNode for x | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:22:15:22:15 | ControlFlowNode for x | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:22:15:22:15 | ControlFlowNode for x | +| examples.py:20:17:20:17 | ControlFlowNode for x | examples.py:22:15:22:15 | ControlFlowNode for x | | examples.py:20:17:20:17 | SSA variable x | examples.py:22:15:22:15 | ControlFlowNode for x | | examples.py:20:17:20:17 | SSA variable x | examples.py:22:15:22:15 | ControlFlowNode for x | | examples.py:20:17:20:17 | SSA variable x | examples.py:22:15:22:15 | ControlFlowNode for x | @@ -164,22 +214,22 @@ | examples.py:25:9:25:19 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:25:1:25:5 | GSSA Variable myobj [Attribute foo] | | examples.py:25:9:25:19 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:27:8:27:12 | ControlFlowNode for myobj [Attribute foo] | | examples.py:25:9:25:19 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:28:6:28:10 | ControlFlowNode for myobj [Attribute foo] | -| examples.py:25:9:25:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:25:9:25:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:25:15:25:18 | ControlFlowNode for Str | examples.py:7:24:7:26 | SSA variable foo | -| examples.py:25:15:25:18 | ControlFlowNode for Str | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:25:9:25:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:25:9:25:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:25:15:25:18 | ControlFlowNode for Str | examples.py:7:24:7:26 | ControlFlowNode for foo | +| examples.py:25:15:25:18 | ControlFlowNode for Str | examples.py:7:24:7:26 | ControlFlowNode for foo | | examples.py:25:15:25:18 | ControlFlowNode for Str | examples.py:25:9:25:19 | ControlFlowNode for MyObj() [Attribute foo] | -| examples.py:27:8:27:12 | ControlFlowNode for myobj | examples.py:20:12:20:14 | SSA variable obj | -| examples.py:27:8:27:12 | ControlFlowNode for myobj | examples.py:20:12:20:14 | SSA variable obj | +| examples.py:27:8:27:12 | ControlFlowNode for myobj | examples.py:20:12:20:14 | ControlFlowNode for obj | +| examples.py:27:8:27:12 | ControlFlowNode for myobj | examples.py:20:12:20:14 | ControlFlowNode for obj | | examples.py:27:8:27:12 | ControlFlowNode for myobj | examples.py:28:6:28:10 | ControlFlowNode for myobj | | examples.py:27:8:27:12 | ControlFlowNode for myobj | examples.py:28:6:28:10 | ControlFlowNode for myobj | -| examples.py:27:8:27:12 | ControlFlowNode for myobj [Attribute foo] | examples.py:20:12:20:14 | SSA variable obj [Attribute foo] | +| examples.py:27:8:27:12 | ControlFlowNode for myobj [Attribute foo] | examples.py:20:12:20:14 | ControlFlowNode for obj [Attribute foo] | | examples.py:27:8:27:12 | ControlFlowNode for myobj [Attribute foo] | examples.py:28:6:28:10 | ControlFlowNode for myobj [Attribute foo] | | examples.py:27:8:27:12 | [post arg] ControlFlowNode for myobj | examples.py:28:6:28:10 | ControlFlowNode for myobj | | examples.py:27:8:27:12 | [post arg] ControlFlowNode for myobj | examples.py:28:6:28:10 | ControlFlowNode for myobj | | examples.py:27:8:27:12 | [post arg] ControlFlowNode for myobj [Attribute foo] | examples.py:28:6:28:10 | ControlFlowNode for myobj [Attribute foo] | -| examples.py:27:15:27:20 | ControlFlowNode for SOURCE | examples.py:20:17:20:17 | SSA variable x | -| examples.py:27:15:27:20 | ControlFlowNode for SOURCE | examples.py:20:17:20:17 | SSA variable x | +| examples.py:27:15:27:20 | ControlFlowNode for SOURCE | examples.py:20:17:20:17 | ControlFlowNode for x | +| examples.py:27:15:27:20 | ControlFlowNode for SOURCE | examples.py:20:17:20:17 | ControlFlowNode for x | | examples.py:27:15:27:20 | ControlFlowNode for SOURCE | examples.py:27:8:27:12 | [post arg] ControlFlowNode for myobj [Attribute foo] | | examples.py:27:15:27:20 | ControlFlowNode for SOURCE | examples.py:31:1:31:1 | GSSA Variable x | | examples.py:27:15:27:20 | ControlFlowNode for SOURCE | examples.py:31:1:31:1 | GSSA Variable x | @@ -261,8 +311,8 @@ | examples.py:33:5:33:15 | ControlFlowNode for NestedObj() [Attribute obj] | examples.py:33:1:33:1 | GSSA Variable a [Attribute obj] | | examples.py:33:5:33:15 | ControlFlowNode for NestedObj() [Attribute obj] | examples.py:35:1:35:1 | ControlFlowNode for a [Attribute obj] | | examples.py:33:5:33:15 | ControlFlowNode for NestedObj() [Attribute obj] | examples.py:37:6:37:6 | ControlFlowNode for a [Attribute obj] | -| examples.py:33:5:33:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | SSA variable self | -| examples.py:33:5:33:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | SSA variable self | +| examples.py:33:5:33:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | ControlFlowNode for self | +| examples.py:33:5:33:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | ControlFlowNode for self | | examples.py:35:1:35:1 | ControlFlowNode for a | examples.py:37:6:37:6 | ControlFlowNode for a | | examples.py:35:1:35:1 | ControlFlowNode for a | examples.py:37:6:37:6 | ControlFlowNode for a | | examples.py:35:1:35:1 | ControlFlowNode for a [Attribute obj, Attribute foo] | examples.py:37:6:37:6 | ControlFlowNode for a [Attribute obj, Attribute foo] | @@ -317,8 +367,8 @@ | examples.py:42:5:42:15 | ControlFlowNode for NestedObj() [Attribute obj] | examples.py:42:1:42:1 | GSSA Variable a [Attribute obj] | | examples.py:42:5:42:15 | ControlFlowNode for NestedObj() [Attribute obj] | examples.py:44:1:44:1 | ControlFlowNode for a [Attribute obj] | | examples.py:42:5:42:15 | ControlFlowNode for NestedObj() [Attribute obj] | examples.py:46:6:46:6 | ControlFlowNode for a [Attribute obj] | -| examples.py:42:5:42:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | SSA variable self | -| examples.py:42:5:42:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | SSA variable self | +| examples.py:42:5:42:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | ControlFlowNode for self | +| examples.py:42:5:42:15 | [pre objCreate] ControlFlowNode for NestedObj() | examples.py:12:18:12:21 | ControlFlowNode for self | | examples.py:44:1:44:1 | ControlFlowNode for a | examples.py:46:6:46:6 | ControlFlowNode for a | | examples.py:44:1:44:1 | ControlFlowNode for a | examples.py:46:6:46:6 | ControlFlowNode for a | | examples.py:44:1:44:1 | ControlFlowNode for a [Attribute obj, Attribute foo] | examples.py:46:6:46:6 | ControlFlowNode for a [Attribute obj, Attribute foo] | @@ -343,10 +393,10 @@ | examples.py:49:7:49:19 | ControlFlowNode for MyObj() | examples.py:50:6:50:8 | ControlFlowNode for obj | | examples.py:49:7:49:19 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:49:1:49:3 | GSSA Variable obj [Attribute foo] | | examples.py:49:7:49:19 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:50:6:50:8 | ControlFlowNode for obj [Attribute foo] | -| examples.py:49:7:49:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:49:7:49:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:49:13:49:18 | ControlFlowNode for SOURCE | examples.py:7:24:7:26 | SSA variable foo | -| examples.py:49:13:49:18 | ControlFlowNode for SOURCE | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:49:7:49:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:49:7:49:19 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:49:13:49:18 | ControlFlowNode for SOURCE | examples.py:7:24:7:26 | ControlFlowNode for foo | +| examples.py:49:13:49:18 | ControlFlowNode for SOURCE | examples.py:7:24:7:26 | ControlFlowNode for foo | | examples.py:49:13:49:18 | ControlFlowNode for SOURCE | examples.py:49:7:49:19 | ControlFlowNode for MyObj() [Attribute foo] | | examples.py:49:13:49:18 | ControlFlowNode for SOURCE | examples.py:59:29:59:34 | ControlFlowNode for SOURCE | | examples.py:49:13:49:18 | ControlFlowNode for SOURCE | examples.py:59:29:59:34 | ControlFlowNode for SOURCE | @@ -364,6 +414,14 @@ | examples.py:53:1:53:30 | GSSA Variable MyObj | examples.py:54:11:54:15 | ControlFlowNode for MyObj | | examples.py:53:5:53:26 | GSSA Variable fields_with_local_flow | examples.py:59:6:59:27 | ControlFlowNode for fields_with_local_flow | | examples.py:53:5:53:26 | GSSA Variable fields_with_local_flow | examples.py:59:6:59:27 | ControlFlowNode for fields_with_local_flow | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:53:28:53:28 | SSA variable x | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:53:28:53:28 | SSA variable x | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:53:28:53:28 | SSA variable x | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:53:28:53:28 | SSA variable x | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:54:17:54:17 | ControlFlowNode for x | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:54:17:54:17 | ControlFlowNode for x | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:54:17:54:17 | ControlFlowNode for x | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:54:17:54:17 | ControlFlowNode for x | | examples.py:53:28:53:28 | SSA variable x | examples.py:54:17:54:17 | ControlFlowNode for x | | examples.py:53:28:53:28 | SSA variable x | examples.py:54:17:54:17 | ControlFlowNode for x | | examples.py:53:28:53:28 | SSA variable x | examples.py:54:17:54:17 | ControlFlowNode for x | @@ -380,12 +438,12 @@ | examples.py:54:11:54:18 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:54:5:54:7 | SSA variable obj [Attribute foo] | | examples.py:54:11:54:18 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:55:9:55:11 | ControlFlowNode for obj [Attribute foo] | | examples.py:54:11:54:18 | ControlFlowNode for MyObj() [Attribute foo] | examples.py:55:9:55:11 | ControlFlowNode for obj [Attribute foo] | -| examples.py:54:11:54:18 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:54:11:54:18 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | SSA variable self | -| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | SSA variable foo | -| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | SSA variable foo | -| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | SSA variable foo | -| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | SSA variable foo | +| examples.py:54:11:54:18 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:54:11:54:18 | [pre objCreate] ControlFlowNode for MyObj() | examples.py:7:18:7:21 | ControlFlowNode for self | +| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | ControlFlowNode for foo | +| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | ControlFlowNode for foo | +| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | ControlFlowNode for foo | +| examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:7:24:7:26 | ControlFlowNode for foo | | examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:54:11:54:18 | ControlFlowNode for MyObj() [Attribute foo] | | examples.py:54:17:54:17 | ControlFlowNode for x | examples.py:54:11:54:18 | ControlFlowNode for MyObj() [Attribute foo] | | examples.py:54:17:54:17 | [post arg] ControlFlowNode for x | examples.py:59:29:59:34 | [post arg] ControlFlowNode for SOURCE | @@ -408,8 +466,8 @@ | examples.py:55:9:55:15 | ControlFlowNode for Attribute | examples.py:56:12:56:12 | ControlFlowNode for a | | examples.py:56:12:56:12 | ControlFlowNode for a | examples.py:59:6:59:35 | ControlFlowNode for fields_with_local_flow() | | examples.py:56:12:56:12 | ControlFlowNode for a | examples.py:59:6:59:35 | ControlFlowNode for fields_with_local_flow() | -| examples.py:59:29:59:34 | ControlFlowNode for SOURCE | examples.py:53:28:53:28 | SSA variable x | -| examples.py:59:29:59:34 | ControlFlowNode for SOURCE | examples.py:53:28:53:28 | SSA variable x | +| examples.py:59:29:59:34 | ControlFlowNode for SOURCE | examples.py:53:28:53:28 | ControlFlowNode for x | +| examples.py:59:29:59:34 | ControlFlowNode for SOURCE | examples.py:53:28:53:28 | ControlFlowNode for x | | examples.py:59:29:59:34 | ControlFlowNode for SOURCE | examples.py:59:6:59:35 | ControlFlowNode for fields_with_local_flow() | | examples.py:59:29:59:34 | ControlFlowNode for SOURCE | examples.py:59:6:59:35 | ControlFlowNode for fields_with_local_flow() | | test.py:0:0:0:0 | ModuleVariableNode for Global Variable MyObj in Module test | test.py:35:20:35:24 | ControlFlowNode for MyObj | @@ -484,6 +542,30 @@ | test.py:6:1:6:17 | ControlFlowNode for FunctionExpr | test.py:6:5:6:13 | GSSA Variable is_source | | test.py:6:5:6:13 | GSSA Variable is_source | test.py:0:0:0:0 | ModuleVariableNode for Global Variable is_source in Module test | | test.py:6:5:6:13 | GSSA Variable is_source | test.py:0:0:0:0 | ModuleVariableNode for Global Variable is_source in Module test | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:12:7:12 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:12:7:12 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:12:7:12 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:12:7:12 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:29:7:29 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:29:7:29 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:29:7:29 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:29:7:29 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:47:7:47 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:47:7:47 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:47:7:47 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:47:7:47 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:58:7:58 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:58:7:58 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:58:7:58 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:58:7:58 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:71:7:71 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:71:7:71 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:71:7:71 | ControlFlowNode for x | +| test.py:6:15:6:15 | ControlFlowNode for x | test.py:7:71:7:71 | ControlFlowNode for x | | test.py:6:15:6:15 | SSA variable x | test.py:7:12:7:12 | ControlFlowNode for x | | test.py:6:15:6:15 | SSA variable x | test.py:7:12:7:12 | ControlFlowNode for x | | test.py:6:15:6:15 | SSA variable x | test.py:7:12:7:12 | ControlFlowNode for x | @@ -554,6 +636,18 @@ | test.py:10:1:10:12 | GSSA Variable is_source | test.py:11:8:11:16 | ControlFlowNode for is_source | | test.py:10:5:10:8 | GSSA Variable SINK | test.py:0:0:0:0 | ModuleVariableNode for Global Variable SINK in Module test | | test.py:10:5:10:8 | GSSA Variable SINK | test.py:0:0:0:0 | ModuleVariableNode for Global Variable SINK in Module test | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:10:10:10:10 | SSA variable x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:10:10:10:10 | SSA variable x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:10:10:10:10 | SSA variable x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:10:10:10:10 | SSA variable x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:11:18:11:18 | ControlFlowNode for x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:11:18:11:18 | ControlFlowNode for x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:11:18:11:18 | ControlFlowNode for x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:11:18:11:18 | ControlFlowNode for x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | +| test.py:10:10:10:10 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | | test.py:10:10:10:10 | SSA variable x | test.py:11:18:11:18 | ControlFlowNode for x | | test.py:10:10:10:10 | SSA variable x | test.py:11:18:11:18 | ControlFlowNode for x | | test.py:10:10:10:10 | SSA variable x | test.py:11:18:11:18 | ControlFlowNode for x | @@ -562,10 +656,10 @@ | test.py:10:10:10:10 | SSA variable x | test.py:14:34:14:34 | ControlFlowNode for x | | test.py:10:10:10:10 | SSA variable x | test.py:14:34:14:34 | ControlFlowNode for x | | test.py:10:10:10:10 | SSA variable x | test.py:14:34:14:34 | ControlFlowNode for x | -| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | -| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | -| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | -| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | +| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | +| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | +| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | +| test.py:11:18:11:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | | test.py:11:18:11:18 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | | test.py:11:18:11:18 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | | test.py:11:18:11:18 | ControlFlowNode for x | test.py:14:34:14:34 | ControlFlowNode for x | @@ -592,6 +686,18 @@ | test.py:17:1:17:14 | GSSA Variable is_source | test.py:18:8:18:16 | ControlFlowNode for is_source | | test.py:17:5:17:10 | GSSA Variable SINK_F | test.py:0:0:0:0 | ModuleVariableNode for Global Variable SINK_F in Module test | | test.py:17:5:17:10 | GSSA Variable SINK_F | test.py:0:0:0:0 | ModuleVariableNode for Global Variable SINK_F in Module test | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:17:12:17:12 | SSA variable x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:17:12:17:12 | SSA variable x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:17:12:17:12 | SSA variable x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:17:12:17:12 | SSA variable x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:18:18:18:18 | ControlFlowNode for x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:18:18:18:18 | ControlFlowNode for x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:18:18:18:18 | ControlFlowNode for x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:18:18:18:18 | ControlFlowNode for x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | +| test.py:17:12:17:12 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | | test.py:17:12:17:12 | SSA variable x | test.py:18:18:18:18 | ControlFlowNode for x | | test.py:17:12:17:12 | SSA variable x | test.py:18:18:18:18 | ControlFlowNode for x | | test.py:17:12:17:12 | SSA variable x | test.py:18:18:18:18 | ControlFlowNode for x | @@ -600,10 +706,10 @@ | test.py:17:12:17:12 | SSA variable x | test.py:19:34:19:34 | ControlFlowNode for x | | test.py:17:12:17:12 | SSA variable x | test.py:19:34:19:34 | ControlFlowNode for x | | test.py:17:12:17:12 | SSA variable x | test.py:19:34:19:34 | ControlFlowNode for x | -| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | -| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | -| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | -| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | SSA variable x | +| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | +| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | +| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | +| test.py:18:18:18:18 | ControlFlowNode for x | test.py:6:15:6:15 | ControlFlowNode for x | | test.py:18:18:18:18 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | | test.py:18:18:18:18 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | | test.py:18:18:18:18 | ControlFlowNode for x | test.py:19:34:19:34 | ControlFlowNode for x | @@ -622,10 +728,26 @@ | test.py:25:13:25:18 | ControlFlowNode for object | test.py:33:17:33:22 | ControlFlowNode for object | | test.py:26:5:26:28 | ControlFlowNode for FunctionExpr | test.py:26:9:26:16 | SSA variable __init__ | | test.py:26:5:26:28 | ControlFlowNode for FunctionExpr | test.py:26:9:26:16 | SSA variable __init__ | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:26:18:26:21 | SSA variable self | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:26:18:26:21 | SSA variable self | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:26:18:26:21 | SSA variable self | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:26:18:26:21 | SSA variable self | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:27:9:27:12 | ControlFlowNode for self | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:27:9:27:12 | ControlFlowNode for self | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:27:9:27:12 | ControlFlowNode for self | +| test.py:26:18:26:21 | ControlFlowNode for self | test.py:27:9:27:12 | ControlFlowNode for self | | test.py:26:18:26:21 | SSA variable self | test.py:27:9:27:12 | ControlFlowNode for self | | test.py:26:18:26:21 | SSA variable self | test.py:27:9:27:12 | ControlFlowNode for self | | test.py:26:18:26:21 | SSA variable self | test.py:27:9:27:12 | ControlFlowNode for self | | test.py:26:18:26:21 | SSA variable self | test.py:27:9:27:12 | ControlFlowNode for self | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:26:24:26:26 | SSA variable foo | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:26:24:26:26 | SSA variable foo | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:26:24:26:26 | SSA variable foo | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:26:24:26:26 | SSA variable foo | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:27:20:27:22 | ControlFlowNode for foo | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:27:20:27:22 | ControlFlowNode for foo | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:27:20:27:22 | ControlFlowNode for foo | +| test.py:26:24:26:26 | ControlFlowNode for foo | test.py:27:20:27:22 | ControlFlowNode for foo | | test.py:26:24:26:26 | SSA variable foo | test.py:27:20:27:22 | ControlFlowNode for foo | | test.py:26:24:26:26 | SSA variable foo | test.py:27:20:27:22 | ControlFlowNode for foo | | test.py:26:24:26:26 | SSA variable foo | test.py:27:20:27:22 | ControlFlowNode for foo | @@ -652,10 +774,26 @@ | test.py:27:20:27:22 | ControlFlowNode for foo | test.py:27:9:27:12 | [post store] ControlFlowNode for self [Attribute foo] | | test.py:29:5:29:26 | ControlFlowNode for FunctionExpr | test.py:29:9:29:14 | SSA variable setFoo | | test.py:29:5:29:26 | ControlFlowNode for FunctionExpr | test.py:29:9:29:14 | SSA variable setFoo | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:29:16:29:19 | SSA variable self | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:29:16:29:19 | SSA variable self | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:29:16:29:19 | SSA variable self | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:29:16:29:19 | SSA variable self | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:30:9:30:12 | ControlFlowNode for self | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:30:9:30:12 | ControlFlowNode for self | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:30:9:30:12 | ControlFlowNode for self | +| test.py:29:16:29:19 | ControlFlowNode for self | test.py:30:9:30:12 | ControlFlowNode for self | | test.py:29:16:29:19 | SSA variable self | test.py:30:9:30:12 | ControlFlowNode for self | | test.py:29:16:29:19 | SSA variable self | test.py:30:9:30:12 | ControlFlowNode for self | | test.py:29:16:29:19 | SSA variable self | test.py:30:9:30:12 | ControlFlowNode for self | | test.py:29:16:29:19 | SSA variable self | test.py:30:9:30:12 | ControlFlowNode for self | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:29:22:29:24 | SSA variable foo | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:29:22:29:24 | SSA variable foo | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:29:22:29:24 | SSA variable foo | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:29:22:29:24 | SSA variable foo | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:30:20:30:22 | ControlFlowNode for foo | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:30:20:30:22 | ControlFlowNode for foo | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:30:20:30:22 | ControlFlowNode for foo | +| test.py:29:22:29:24 | ControlFlowNode for foo | test.py:30:20:30:22 | ControlFlowNode for foo | | test.py:29:22:29:24 | SSA variable foo | test.py:30:20:30:22 | ControlFlowNode for foo | | test.py:29:22:29:24 | SSA variable foo | test.py:30:20:30:22 | ControlFlowNode for foo | | test.py:29:22:29:24 | SSA variable foo | test.py:30:20:30:22 | ControlFlowNode for foo | @@ -673,6 +811,14 @@ | test.py:34:5:34:23 | ControlFlowNode for FunctionExpr | test.py:34:9:34:16 | SSA variable __init__ | | test.py:34:5:34:23 | GSSA Variable MyObj | test.py:35:20:35:24 | ControlFlowNode for MyObj | | test.py:34:5:34:23 | GSSA Variable MyObj | test.py:35:20:35:24 | ControlFlowNode for MyObj | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:34:18:34:21 | SSA variable self | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:34:18:34:21 | SSA variable self | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:34:18:34:21 | SSA variable self | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:34:18:34:21 | SSA variable self | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:35:9:35:12 | ControlFlowNode for self | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:35:9:35:12 | ControlFlowNode for self | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:35:9:35:12 | ControlFlowNode for self | +| test.py:34:18:34:21 | ControlFlowNode for self | test.py:35:9:35:12 | ControlFlowNode for self | | test.py:34:18:34:21 | SSA variable self | test.py:35:9:35:12 | ControlFlowNode for self | | test.py:34:18:34:21 | SSA variable self | test.py:35:9:35:12 | ControlFlowNode for self | | test.py:34:18:34:21 | SSA variable self | test.py:35:9:35:12 | ControlFlowNode for self | @@ -687,13 +833,23 @@ | test.py:35:9:35:12 | [post store] ControlFlowNode for self [Attribute obj] | test.py:73:9:73:19 | ControlFlowNode for NestedObj() [Attribute obj] | | test.py:35:20:35:30 | ControlFlowNode for MyObj() | test.py:35:9:35:12 | [post store] ControlFlowNode for self [Attribute obj] | | test.py:35:20:35:30 | ControlFlowNode for MyObj() [Attribute foo] | test.py:35:9:35:12 | [post store] ControlFlowNode for self [Attribute obj, Attribute foo] | -| test.py:35:20:35:30 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:35:20:35:30 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:35:26:35:29 | ControlFlowNode for Str | test.py:26:24:26:26 | SSA variable foo | -| test.py:35:26:35:29 | ControlFlowNode for Str | test.py:26:24:26:26 | SSA variable foo | +| test.py:35:20:35:30 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:35:20:35:30 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:35:26:35:29 | ControlFlowNode for Str | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:35:26:35:29 | ControlFlowNode for Str | test.py:26:24:26:26 | ControlFlowNode for foo | | test.py:35:26:35:29 | ControlFlowNode for Str | test.py:35:20:35:30 | ControlFlowNode for MyObj() [Attribute foo] | | test.py:37:5:37:21 | ControlFlowNode for FunctionExpr | test.py:37:9:37:14 | SSA variable getObj | | test.py:37:5:37:21 | ControlFlowNode for FunctionExpr | test.py:37:9:37:14 | SSA variable getObj | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:37:16:37:19 | SSA variable self | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:37:16:37:19 | SSA variable self | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:37:16:37:19 | SSA variable self | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:37:16:37:19 | SSA variable self | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:38:16:38:19 | ControlFlowNode for self | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:38:16:38:19 | ControlFlowNode for self | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:38:16:38:19 | ControlFlowNode for self | +| test.py:37:16:37:19 | ControlFlowNode for self | test.py:38:16:38:19 | ControlFlowNode for self | +| test.py:37:16:37:19 | ControlFlowNode for self [Attribute obj] | test.py:37:16:37:19 | SSA variable self [Attribute obj] | +| test.py:37:16:37:19 | ControlFlowNode for self [Attribute obj] | test.py:38:16:38:19 | ControlFlowNode for self [Attribute obj] | | test.py:37:16:37:19 | SSA variable self | test.py:38:16:38:19 | ControlFlowNode for self | | test.py:37:16:37:19 | SSA variable self | test.py:38:16:38:19 | ControlFlowNode for self | | test.py:37:16:37:19 | SSA variable self | test.py:38:16:38:19 | ControlFlowNode for self | @@ -711,6 +867,20 @@ | test.py:41:1:41:19 | GSSA Variable SINK_F | test.py:42:5:42:10 | ControlFlowNode for SINK_F | | test.py:41:5:41:10 | GSSA Variable setFoo | test.py:0:0:0:0 | ModuleVariableNode for Global Variable setFoo in Module test | | test.py:41:5:41:10 | GSSA Variable setFoo | test.py:0:0:0:0 | ModuleVariableNode for Global Variable setFoo in Module test | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:41:12:41:14 | SSA variable obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:41:12:41:14 | SSA variable obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:41:12:41:14 | SSA variable obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:41:12:41:14 | SSA variable obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:42:12:42:14 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:42:12:42:14 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:42:12:42:14 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:42:12:42:14 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:43:5:43:7 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:43:5:43:7 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:43:5:43:7 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj | test.py:43:5:43:7 | ControlFlowNode for obj | +| test.py:41:12:41:14 | ControlFlowNode for obj [Attribute foo] | test.py:41:12:41:14 | SSA variable obj [Attribute foo] | +| test.py:41:12:41:14 | ControlFlowNode for obj [Attribute foo] | test.py:42:12:42:14 | ControlFlowNode for obj [Attribute foo] | | test.py:41:12:41:14 | SSA variable obj | test.py:42:12:42:14 | ControlFlowNode for obj | | test.py:41:12:41:14 | SSA variable obj | test.py:42:12:42:14 | ControlFlowNode for obj | | test.py:41:12:41:14 | SSA variable obj | test.py:42:12:42:14 | ControlFlowNode for obj | @@ -720,6 +890,14 @@ | test.py:41:12:41:14 | SSA variable obj | test.py:43:5:43:7 | ControlFlowNode for obj | | test.py:41:12:41:14 | SSA variable obj | test.py:43:5:43:7 | ControlFlowNode for obj | | test.py:41:12:41:14 | SSA variable obj [Attribute foo] | test.py:42:12:42:14 | ControlFlowNode for obj [Attribute foo] | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:41:17:41:17 | SSA variable x | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:41:17:41:17 | SSA variable x | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:41:17:41:17 | SSA variable x | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:41:17:41:17 | SSA variable x | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:43:15:43:15 | ControlFlowNode for x | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:43:15:43:15 | ControlFlowNode for x | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:43:15:43:15 | ControlFlowNode for x | +| test.py:41:17:41:17 | ControlFlowNode for x | test.py:43:15:43:15 | ControlFlowNode for x | | test.py:41:17:41:17 | SSA variable x | test.py:43:15:43:15 | ControlFlowNode for x | | test.py:41:17:41:17 | SSA variable x | test.py:43:15:43:15 | ControlFlowNode for x | | test.py:41:17:41:17 | SSA variable x | test.py:43:15:43:15 | ControlFlowNode for x | @@ -735,10 +913,10 @@ | test.py:42:12:42:14 | [post read] ControlFlowNode for obj | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj | | test.py:42:12:42:14 | [post read] ControlFlowNode for obj | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj | | test.py:42:12:42:14 | [post read] ControlFlowNode for obj [Attribute foo] | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj [Attribute foo] | -| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | SSA variable x | -| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | SSA variable x | -| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | SSA variable x | -| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | SSA variable x | +| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | ControlFlowNode for x | +| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | ControlFlowNode for x | +| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | ControlFlowNode for x | +| test.py:42:12:42:18 | ControlFlowNode for Attribute | test.py:17:12:17:12 | ControlFlowNode for x | | test.py:42:12:42:18 | [post arg] ControlFlowNode for Attribute | test.py:42:12:42:14 | [post read] ControlFlowNode for obj [Attribute foo] | | test.py:43:5:43:7 | [post store] ControlFlowNode for obj | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj | | test.py:43:5:43:7 | [post store] ControlFlowNode for obj | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj | @@ -770,27 +948,27 @@ | test.py:47:13:47:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:47:5:47:9 | SSA variable myobj [Attribute foo] | | test.py:47:13:47:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:49:12:49:16 | ControlFlowNode for myobj [Attribute foo] | | test.py:47:13:47:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:50:10:50:14 | ControlFlowNode for myobj [Attribute foo] | -| test.py:47:13:47:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:47:13:47:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:47:19:47:22 | ControlFlowNode for Str | test.py:26:24:26:26 | SSA variable foo | -| test.py:47:19:47:22 | ControlFlowNode for Str | test.py:26:24:26:26 | SSA variable foo | +| test.py:47:13:47:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:47:13:47:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:47:19:47:22 | ControlFlowNode for Str | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:47:19:47:22 | ControlFlowNode for Str | test.py:26:24:26:26 | ControlFlowNode for foo | | test.py:47:19:47:22 | ControlFlowNode for Str | test.py:47:13:47:23 | ControlFlowNode for MyObj() [Attribute foo] | -| test.py:49:12:49:16 | ControlFlowNode for myobj | test.py:41:12:41:14 | SSA variable obj | -| test.py:49:12:49:16 | ControlFlowNode for myobj | test.py:41:12:41:14 | SSA variable obj | +| test.py:49:12:49:16 | ControlFlowNode for myobj | test.py:41:12:41:14 | ControlFlowNode for obj | +| test.py:49:12:49:16 | ControlFlowNode for myobj | test.py:41:12:41:14 | ControlFlowNode for obj | | test.py:49:12:49:16 | ControlFlowNode for myobj | test.py:50:10:50:14 | ControlFlowNode for myobj | | test.py:49:12:49:16 | ControlFlowNode for myobj | test.py:50:10:50:14 | ControlFlowNode for myobj | -| test.py:49:12:49:16 | ControlFlowNode for myobj [Attribute foo] | test.py:41:12:41:14 | SSA variable obj [Attribute foo] | +| test.py:49:12:49:16 | ControlFlowNode for myobj [Attribute foo] | test.py:41:12:41:14 | ControlFlowNode for obj [Attribute foo] | | test.py:49:12:49:16 | ControlFlowNode for myobj [Attribute foo] | test.py:50:10:50:14 | ControlFlowNode for myobj [Attribute foo] | | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj | test.py:50:10:50:14 | ControlFlowNode for myobj | | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj | test.py:50:10:50:14 | ControlFlowNode for myobj | | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj [Attribute foo] | test.py:50:10:50:14 | ControlFlowNode for myobj [Attribute foo] | -| test.py:49:19:49:24 | ControlFlowNode for SOURCE | test.py:41:17:41:17 | SSA variable x | -| test.py:49:19:49:24 | ControlFlowNode for SOURCE | test.py:41:17:41:17 | SSA variable x | +| test.py:49:19:49:24 | ControlFlowNode for SOURCE | test.py:41:17:41:17 | ControlFlowNode for x | +| test.py:49:19:49:24 | ControlFlowNode for SOURCE | test.py:41:17:41:17 | ControlFlowNode for x | | test.py:49:19:49:24 | ControlFlowNode for SOURCE | test.py:49:12:49:16 | [post arg] ControlFlowNode for myobj [Attribute foo] | | test.py:50:10:50:14 | ControlFlowNode for myobj [Attribute foo] | test.py:50:10:50:18 | ControlFlowNode for Attribute | | test.py:50:10:50:14 | ControlFlowNode for myobj [Attribute foo] | test.py:50:10:50:18 | ControlFlowNode for Attribute | -| test.py:50:10:50:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | -| test.py:50:10:50:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | +| test.py:50:10:50:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:50:10:50:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | | test.py:53:1:53:27 | ControlFlowNode for FunctionExpr | test.py:53:5:53:24 | GSSA Variable test_example1_method | | test.py:53:1:53:27 | ControlFlowNode for FunctionExpr | test.py:53:5:53:24 | GSSA Variable test_example1_method | | test.py:53:1:53:27 | GSSA Variable MyObj | test.py:54:13:54:17 | ControlFlowNode for MyObj | @@ -814,26 +992,26 @@ | test.py:54:13:54:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:54:5:54:9 | SSA variable myobj [Attribute foo] | | test.py:54:13:54:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:56:5:56:9 | ControlFlowNode for myobj [Attribute foo] | | test.py:54:13:54:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:57:10:57:14 | ControlFlowNode for myobj [Attribute foo] | -| test.py:54:13:54:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:54:13:54:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:54:19:54:22 | ControlFlowNode for Str | test.py:26:24:26:26 | SSA variable foo | -| test.py:54:19:54:22 | ControlFlowNode for Str | test.py:26:24:26:26 | SSA variable foo | +| test.py:54:13:54:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:54:13:54:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:54:19:54:22 | ControlFlowNode for Str | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:54:19:54:22 | ControlFlowNode for Str | test.py:26:24:26:26 | ControlFlowNode for foo | | test.py:54:19:54:22 | ControlFlowNode for Str | test.py:54:13:54:23 | ControlFlowNode for MyObj() [Attribute foo] | -| test.py:56:5:56:9 | ControlFlowNode for myobj | test.py:29:16:29:19 | SSA variable self | -| test.py:56:5:56:9 | ControlFlowNode for myobj | test.py:29:16:29:19 | SSA variable self | +| test.py:56:5:56:9 | ControlFlowNode for myobj | test.py:29:16:29:19 | ControlFlowNode for self | +| test.py:56:5:56:9 | ControlFlowNode for myobj | test.py:29:16:29:19 | ControlFlowNode for self | | test.py:56:5:56:9 | ControlFlowNode for myobj | test.py:57:10:57:14 | ControlFlowNode for myobj | | test.py:56:5:56:9 | ControlFlowNode for myobj | test.py:57:10:57:14 | ControlFlowNode for myobj | | test.py:56:5:56:9 | ControlFlowNode for myobj [Attribute foo] | test.py:57:10:57:14 | ControlFlowNode for myobj [Attribute foo] | | test.py:56:5:56:9 | [post read] ControlFlowNode for myobj | test.py:57:10:57:14 | ControlFlowNode for myobj | | test.py:56:5:56:9 | [post read] ControlFlowNode for myobj | test.py:57:10:57:14 | ControlFlowNode for myobj | | test.py:56:5:56:9 | [post read] ControlFlowNode for myobj [Attribute foo] | test.py:57:10:57:14 | ControlFlowNode for myobj [Attribute foo] | -| test.py:56:18:56:23 | ControlFlowNode for SOURCE | test.py:29:22:29:24 | SSA variable foo | -| test.py:56:18:56:23 | ControlFlowNode for SOURCE | test.py:29:22:29:24 | SSA variable foo | +| test.py:56:18:56:23 | ControlFlowNode for SOURCE | test.py:29:22:29:24 | ControlFlowNode for foo | +| test.py:56:18:56:23 | ControlFlowNode for SOURCE | test.py:29:22:29:24 | ControlFlowNode for foo | | test.py:56:18:56:23 | ControlFlowNode for SOURCE | test.py:56:5:56:9 | [post read] ControlFlowNode for myobj [Attribute foo] | | test.py:57:10:57:14 | ControlFlowNode for myobj [Attribute foo] | test.py:57:10:57:18 | ControlFlowNode for Attribute | | test.py:57:10:57:14 | ControlFlowNode for myobj [Attribute foo] | test.py:57:10:57:18 | ControlFlowNode for Attribute | -| test.py:57:10:57:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | -| test.py:57:10:57:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | +| test.py:57:10:57:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:57:10:57:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | | test.py:60:1:60:20 | ControlFlowNode for FunctionExpr | test.py:60:5:60:17 | GSSA Variable test_example2 | | test.py:60:1:60:20 | ControlFlowNode for FunctionExpr | test.py:60:5:60:17 | GSSA Variable test_example2 | | test.py:60:1:60:20 | GSSA Variable NestedObj | test.py:63:9:63:17 | ControlFlowNode for NestedObj | @@ -872,8 +1050,8 @@ | test.py:63:9:63:19 | ControlFlowNode for NestedObj() [Attribute obj] | test.py:63:5:63:5 | SSA variable a [Attribute obj] | | test.py:63:9:63:19 | ControlFlowNode for NestedObj() [Attribute obj] | test.py:65:5:65:5 | ControlFlowNode for a [Attribute obj] | | test.py:63:9:63:19 | ControlFlowNode for NestedObj() [Attribute obj] | test.py:67:10:67:10 | ControlFlowNode for a [Attribute obj] | -| test.py:63:9:63:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | SSA variable self | -| test.py:63:9:63:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | SSA variable self | +| test.py:63:9:63:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | ControlFlowNode for self | +| test.py:63:9:63:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | ControlFlowNode for self | | test.py:65:5:65:5 | ControlFlowNode for a | test.py:67:10:67:10 | ControlFlowNode for a | | test.py:65:5:65:5 | ControlFlowNode for a | test.py:67:10:67:10 | ControlFlowNode for a | | test.py:65:5:65:5 | ControlFlowNode for a [Attribute obj, Attribute foo] | test.py:67:10:67:10 | ControlFlowNode for a [Attribute obj, Attribute foo] | @@ -892,8 +1070,8 @@ | test.py:67:10:67:10 | ControlFlowNode for a [Attribute obj] | test.py:67:10:67:14 | ControlFlowNode for Attribute | | test.py:67:10:67:14 | ControlFlowNode for Attribute [Attribute foo] | test.py:67:10:67:18 | ControlFlowNode for Attribute | | test.py:67:10:67:14 | ControlFlowNode for Attribute [Attribute foo] | test.py:67:10:67:18 | ControlFlowNode for Attribute | -| test.py:67:10:67:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | -| test.py:67:10:67:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | +| test.py:67:10:67:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:67:10:67:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | | test.py:70:1:70:27 | ControlFlowNode for FunctionExpr | test.py:70:5:70:24 | GSSA Variable test_example2_method | | test.py:70:1:70:27 | ControlFlowNode for FunctionExpr | test.py:70:5:70:24 | GSSA Variable test_example2_method | | test.py:70:1:70:27 | GSSA Variable NestedObj | test.py:73:9:73:17 | ControlFlowNode for NestedObj | @@ -932,14 +1110,14 @@ | test.py:73:9:73:19 | ControlFlowNode for NestedObj() [Attribute obj] | test.py:73:5:73:5 | SSA variable a [Attribute obj] | | test.py:73:9:73:19 | ControlFlowNode for NestedObj() [Attribute obj] | test.py:75:5:75:5 | ControlFlowNode for a [Attribute obj] | | test.py:73:9:73:19 | ControlFlowNode for NestedObj() [Attribute obj] | test.py:77:10:77:10 | ControlFlowNode for a [Attribute obj] | -| test.py:73:9:73:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | SSA variable self | -| test.py:73:9:73:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | SSA variable self | -| test.py:75:5:75:5 | ControlFlowNode for a | test.py:37:16:37:19 | SSA variable self | -| test.py:75:5:75:5 | ControlFlowNode for a | test.py:37:16:37:19 | SSA variable self | +| test.py:73:9:73:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | ControlFlowNode for self | +| test.py:73:9:73:19 | [pre objCreate] ControlFlowNode for NestedObj() | test.py:34:18:34:21 | ControlFlowNode for self | +| test.py:75:5:75:5 | ControlFlowNode for a | test.py:37:16:37:19 | ControlFlowNode for self | +| test.py:75:5:75:5 | ControlFlowNode for a | test.py:37:16:37:19 | ControlFlowNode for self | | test.py:75:5:75:5 | ControlFlowNode for a | test.py:77:10:77:10 | ControlFlowNode for a | | test.py:75:5:75:5 | ControlFlowNode for a | test.py:77:10:77:10 | ControlFlowNode for a | | test.py:75:5:75:5 | ControlFlowNode for a [Attribute obj, Attribute foo] | test.py:77:10:77:10 | ControlFlowNode for a [Attribute obj, Attribute foo] | -| test.py:75:5:75:5 | ControlFlowNode for a [Attribute obj] | test.py:37:16:37:19 | SSA variable self [Attribute obj] | +| test.py:75:5:75:5 | ControlFlowNode for a [Attribute obj] | test.py:37:16:37:19 | ControlFlowNode for self [Attribute obj] | | test.py:75:5:75:5 | ControlFlowNode for a [Attribute obj] | test.py:75:5:75:14 | ControlFlowNode for Attribute() | | test.py:75:5:75:5 | ControlFlowNode for a [Attribute obj] | test.py:75:5:75:14 | ControlFlowNode for Attribute() | | test.py:75:5:75:5 | ControlFlowNode for a [Attribute obj] | test.py:77:10:77:10 | ControlFlowNode for a [Attribute obj] | @@ -955,8 +1133,8 @@ | test.py:77:10:77:10 | ControlFlowNode for a [Attribute obj] | test.py:77:10:77:14 | ControlFlowNode for Attribute | | test.py:77:10:77:14 | ControlFlowNode for Attribute [Attribute foo] | test.py:77:10:77:18 | ControlFlowNode for Attribute | | test.py:77:10:77:14 | ControlFlowNode for Attribute [Attribute foo] | test.py:77:10:77:18 | ControlFlowNode for Attribute | -| test.py:77:10:77:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | -| test.py:77:10:77:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | +| test.py:77:10:77:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:77:10:77:18 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | | test.py:80:1:80:20 | ControlFlowNode for FunctionExpr | test.py:80:5:80:17 | GSSA Variable test_example3 | | test.py:80:1:80:20 | ControlFlowNode for FunctionExpr | test.py:80:5:80:17 | GSSA Variable test_example3 | | test.py:80:1:80:20 | GSSA Variable MyObj | test.py:81:11:81:15 | ControlFlowNode for MyObj | @@ -974,15 +1152,15 @@ | test.py:81:11:81:23 | ControlFlowNode for MyObj() | test.py:82:10:82:12 | ControlFlowNode for obj | | test.py:81:11:81:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:81:5:81:7 | SSA variable obj [Attribute foo] | | test.py:81:11:81:23 | ControlFlowNode for MyObj() [Attribute foo] | test.py:82:10:82:12 | ControlFlowNode for obj [Attribute foo] | -| test.py:81:11:81:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:81:11:81:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:81:17:81:22 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | SSA variable foo | -| test.py:81:17:81:22 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | SSA variable foo | +| test.py:81:11:81:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:81:11:81:23 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:81:17:81:22 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:81:17:81:22 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | ControlFlowNode for foo | | test.py:81:17:81:22 | ControlFlowNode for SOURCE | test.py:81:11:81:23 | ControlFlowNode for MyObj() [Attribute foo] | | test.py:82:10:82:12 | ControlFlowNode for obj [Attribute foo] | test.py:82:10:82:16 | ControlFlowNode for Attribute | | test.py:82:10:82:12 | ControlFlowNode for obj [Attribute foo] | test.py:82:10:82:16 | ControlFlowNode for Attribute | -| test.py:82:10:82:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | -| test.py:82:10:82:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | +| test.py:82:10:82:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:82:10:82:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | | test.py:85:1:85:23 | ControlFlowNode for FunctionExpr | test.py:85:5:85:20 | GSSA Variable test_example3_kw | | test.py:85:1:85:23 | ControlFlowNode for FunctionExpr | test.py:85:5:85:20 | GSSA Variable test_example3_kw | | test.py:85:1:85:23 | GSSA Variable MyObj | test.py:86:11:86:15 | ControlFlowNode for MyObj | @@ -1000,21 +1178,29 @@ | test.py:86:11:86:27 | ControlFlowNode for MyObj() | test.py:87:10:87:12 | ControlFlowNode for obj | | test.py:86:11:86:27 | ControlFlowNode for MyObj() [Attribute foo] | test.py:86:5:86:7 | SSA variable obj [Attribute foo] | | test.py:86:11:86:27 | ControlFlowNode for MyObj() [Attribute foo] | test.py:87:10:87:12 | ControlFlowNode for obj [Attribute foo] | -| test.py:86:11:86:27 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:86:11:86:27 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:86:21:86:26 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | SSA variable foo | -| test.py:86:21:86:26 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | SSA variable foo | +| test.py:86:11:86:27 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:86:11:86:27 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:86:21:86:26 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:86:21:86:26 | ControlFlowNode for SOURCE | test.py:26:24:26:26 | ControlFlowNode for foo | | test.py:86:21:86:26 | ControlFlowNode for SOURCE | test.py:86:11:86:27 | ControlFlowNode for MyObj() [Attribute foo] | | test.py:87:10:87:12 | ControlFlowNode for obj [Attribute foo] | test.py:87:10:87:16 | ControlFlowNode for Attribute | | test.py:87:10:87:12 | ControlFlowNode for obj [Attribute foo] | test.py:87:10:87:16 | ControlFlowNode for Attribute | -| test.py:87:10:87:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | -| test.py:87:10:87:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | SSA variable x | +| test.py:87:10:87:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:87:10:87:16 | ControlFlowNode for Attribute | test.py:10:10:10:10 | ControlFlowNode for x | | test.py:90:1:90:30 | ControlFlowNode for FunctionExpr | test.py:90:5:90:26 | GSSA Variable fields_with_local_flow | | test.py:90:1:90:30 | ControlFlowNode for FunctionExpr | test.py:90:5:90:26 | GSSA Variable fields_with_local_flow | | test.py:90:1:90:30 | GSSA Variable MyObj | test.py:91:11:91:15 | ControlFlowNode for MyObj | | test.py:90:1:90:30 | GSSA Variable MyObj | test.py:91:11:91:15 | ControlFlowNode for MyObj | | test.py:90:5:90:26 | GSSA Variable fields_with_local_flow | test.py:0:0:0:0 | ModuleVariableNode for Global Variable fields_with_local_flow in Module test | | test.py:90:5:90:26 | GSSA Variable fields_with_local_flow | test.py:0:0:0:0 | ModuleVariableNode for Global Variable fields_with_local_flow in Module test | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:90:28:90:28 | SSA variable x | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:90:28:90:28 | SSA variable x | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:90:28:90:28 | SSA variable x | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:90:28:90:28 | SSA variable x | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:91:17:91:17 | ControlFlowNode for x | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:91:17:91:17 | ControlFlowNode for x | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:91:17:91:17 | ControlFlowNode for x | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:91:17:91:17 | ControlFlowNode for x | | test.py:90:28:90:28 | SSA variable x | test.py:91:17:91:17 | ControlFlowNode for x | | test.py:90:28:90:28 | SSA variable x | test.py:91:17:91:17 | ControlFlowNode for x | | test.py:90:28:90:28 | SSA variable x | test.py:91:17:91:17 | ControlFlowNode for x | @@ -1031,12 +1217,12 @@ | test.py:91:11:91:18 | ControlFlowNode for MyObj() [Attribute foo] | test.py:91:5:91:7 | SSA variable obj [Attribute foo] | | test.py:91:11:91:18 | ControlFlowNode for MyObj() [Attribute foo] | test.py:92:9:92:11 | ControlFlowNode for obj [Attribute foo] | | test.py:91:11:91:18 | ControlFlowNode for MyObj() [Attribute foo] | test.py:92:9:92:11 | ControlFlowNode for obj [Attribute foo] | -| test.py:91:11:91:18 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:91:11:91:18 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | SSA variable self | -| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | SSA variable foo | -| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | SSA variable foo | -| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | SSA variable foo | -| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | SSA variable foo | +| test.py:91:11:91:18 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:91:11:91:18 | [pre objCreate] ControlFlowNode for MyObj() | test.py:26:18:26:21 | ControlFlowNode for self | +| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | ControlFlowNode for foo | +| test.py:91:17:91:17 | ControlFlowNode for x | test.py:26:24:26:26 | ControlFlowNode for foo | | test.py:91:17:91:17 | ControlFlowNode for x | test.py:91:11:91:18 | ControlFlowNode for MyObj() [Attribute foo] | | test.py:91:17:91:17 | ControlFlowNode for x | test.py:91:11:91:18 | ControlFlowNode for MyObj() [Attribute foo] | | test.py:91:17:91:17 | [post arg] ControlFlowNode for x | test.py:97:33:97:38 | [post arg] ControlFlowNode for SOURCE | @@ -1067,9 +1253,9 @@ | test.py:96:1:96:18 | GSSA Variable SOURCE | test.py:97:33:97:38 | ControlFlowNode for SOURCE | | test.py:96:1:96:18 | GSSA Variable fields_with_local_flow | test.py:97:10:97:31 | ControlFlowNode for fields_with_local_flow | | test.py:96:1:96:18 | GSSA Variable fields_with_local_flow | test.py:97:10:97:31 | ControlFlowNode for fields_with_local_flow | -| test.py:97:10:97:39 | ControlFlowNode for fields_with_local_flow() | test.py:10:10:10:10 | SSA variable x | -| test.py:97:10:97:39 | ControlFlowNode for fields_with_local_flow() | test.py:10:10:10:10 | SSA variable x | -| test.py:97:33:97:38 | ControlFlowNode for SOURCE | test.py:90:28:90:28 | SSA variable x | -| test.py:97:33:97:38 | ControlFlowNode for SOURCE | test.py:90:28:90:28 | SSA variable x | +| test.py:97:10:97:39 | ControlFlowNode for fields_with_local_flow() | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:97:10:97:39 | ControlFlowNode for fields_with_local_flow() | test.py:10:10:10:10 | ControlFlowNode for x | +| test.py:97:33:97:38 | ControlFlowNode for SOURCE | test.py:90:28:90:28 | ControlFlowNode for x | +| test.py:97:33:97:38 | ControlFlowNode for SOURCE | test.py:90:28:90:28 | ControlFlowNode for x | | test.py:97:33:97:38 | ControlFlowNode for SOURCE | test.py:97:10:97:39 | ControlFlowNode for fields_with_local_flow() | | test.py:97:33:97:38 | ControlFlowNode for SOURCE | test.py:97:10:97:39 | ControlFlowNode for fields_with_local_flow() | diff --git a/python/ql/test/experimental/dataflow/fieldflow/localFlow.expected b/python/ql/test/experimental/dataflow/fieldflow/localFlow.expected index 077345e6e34c..512ac4d31ad5 100644 --- a/python/ql/test/experimental/dataflow/fieldflow/localFlow.expected +++ b/python/ql/test/experimental/dataflow/fieldflow/localFlow.expected @@ -1,10 +1,12 @@ | examples.py:53:1:53:30 | GSSA Variable MyObj | examples.py:54:11:54:15 | ControlFlowNode for MyObj | +| examples.py:53:28:53:28 | ControlFlowNode for x | examples.py:53:28:53:28 | SSA variable x | | examples.py:53:28:53:28 | SSA variable x | examples.py:54:17:54:17 | ControlFlowNode for x | | examples.py:54:5:54:7 | SSA variable obj | examples.py:55:9:55:11 | ControlFlowNode for obj | | examples.py:54:11:54:18 | ControlFlowNode for MyObj() | examples.py:54:5:54:7 | SSA variable obj | | examples.py:55:5:55:5 | SSA variable a | examples.py:56:12:56:12 | ControlFlowNode for a | | examples.py:55:9:55:15 | ControlFlowNode for Attribute | examples.py:55:5:55:5 | SSA variable a | | test.py:90:1:90:30 | GSSA Variable MyObj | test.py:91:11:91:15 | ControlFlowNode for MyObj | +| test.py:90:28:90:28 | ControlFlowNode for x | test.py:90:28:90:28 | SSA variable x | | test.py:90:28:90:28 | SSA variable x | test.py:91:17:91:17 | ControlFlowNode for x | | test.py:91:5:91:7 | SSA variable obj | test.py:92:9:92:11 | ControlFlowNode for obj | | test.py:91:11:91:18 | ControlFlowNode for MyObj() | test.py:91:5:91:7 | SSA variable obj | diff --git a/python/ql/test/experimental/library-tests/frameworks/modeling-example/ProperModel.expected b/python/ql/test/experimental/library-tests/frameworks/modeling-example/ProperModel.expected index 9c6f6ad30c1f..bbc5056d6a64 100644 --- a/python/ql/test/experimental/library-tests/frameworks/modeling-example/ProperModel.expected +++ b/python/ql/test/experimental/library-tests/frameworks/modeling-example/ProperModel.expected @@ -1,60 +1,60 @@ edges | test.py:21:11:21:18 | ControlFlowNode for source() | test.py:22:10:22:24 | ControlFlowNode for Attribute() | | test.py:29:11:29:18 | ControlFlowNode for source() | test.py:33:10:33:12 | ControlFlowNode for val | -| test.py:39:15:39:17 | SSA variable arg | test.py:41:10:41:12 | ControlFlowNode for val | +| test.py:39:15:39:17 | ControlFlowNode for arg | test.py:41:10:41:12 | ControlFlowNode for val | | test.py:45:11:45:18 | ControlFlowNode for source() | test.py:46:15:46:17 | ControlFlowNode for src | -| test.py:46:15:46:17 | ControlFlowNode for src | test.py:39:15:39:17 | SSA variable arg | -| test.py:52:24:52:26 | SSA variable arg | test.py:54:10:54:12 | ControlFlowNode for val | -| test.py:57:33:57:35 | SSA variable arg | test.py:58:24:58:26 | ControlFlowNode for arg | -| test.py:58:24:58:26 | ControlFlowNode for arg | test.py:52:24:52:26 | SSA variable arg | -| test.py:61:33:61:35 | SSA variable arg | test.py:62:33:62:35 | ControlFlowNode for arg | -| test.py:62:33:62:35 | ControlFlowNode for arg | test.py:57:33:57:35 | SSA variable arg | -| test.py:65:33:65:35 | SSA variable arg | test.py:66:33:66:35 | ControlFlowNode for arg | -| test.py:66:33:66:35 | ControlFlowNode for arg | test.py:61:33:61:35 | SSA variable arg | +| test.py:46:15:46:17 | ControlFlowNode for src | test.py:39:15:39:17 | ControlFlowNode for arg | +| test.py:52:24:52:26 | ControlFlowNode for arg | test.py:54:10:54:12 | ControlFlowNode for val | +| test.py:57:33:57:35 | ControlFlowNode for arg | test.py:58:24:58:26 | ControlFlowNode for arg | +| test.py:58:24:58:26 | ControlFlowNode for arg | test.py:52:24:52:26 | ControlFlowNode for arg | +| test.py:61:33:61:35 | ControlFlowNode for arg | test.py:62:33:62:35 | ControlFlowNode for arg | +| test.py:62:33:62:35 | ControlFlowNode for arg | test.py:57:33:57:35 | ControlFlowNode for arg | +| test.py:65:33:65:35 | ControlFlowNode for arg | test.py:66:33:66:35 | ControlFlowNode for arg | +| test.py:66:33:66:35 | ControlFlowNode for arg | test.py:61:33:61:35 | ControlFlowNode for arg | | test.py:70:11:70:18 | ControlFlowNode for source() | test.py:71:33:71:35 | ControlFlowNode for src | -| test.py:71:33:71:35 | ControlFlowNode for src | test.py:65:33:65:35 | SSA variable arg | -| test.py:77:23:77:24 | SSA variable bm | test.py:79:10:79:12 | ControlFlowNode for val | +| test.py:71:33:71:35 | ControlFlowNode for src | test.py:65:33:65:35 | ControlFlowNode for arg | +| test.py:77:23:77:24 | ControlFlowNode for bm | test.py:79:10:79:12 | ControlFlowNode for val | | test.py:83:11:83:18 | ControlFlowNode for source() | test.py:84:23:84:35 | ControlFlowNode for Attribute | -| test.py:84:23:84:35 | ControlFlowNode for Attribute | test.py:77:23:77:24 | SSA variable bm | -| test.py:89:37:89:38 | SSA variable bm | test.py:91:10:91:12 | ControlFlowNode for val | -| test.py:94:46:94:47 | SSA variable bm | test.py:95:37:95:38 | ControlFlowNode for bm | -| test.py:95:37:95:38 | ControlFlowNode for bm | test.py:89:37:89:38 | SSA variable bm | -| test.py:98:46:98:47 | SSA variable bm | test.py:99:46:99:47 | ControlFlowNode for bm | -| test.py:99:46:99:47 | ControlFlowNode for bm | test.py:94:46:94:47 | SSA variable bm | -| test.py:102:46:102:47 | SSA variable bm | test.py:103:46:103:47 | ControlFlowNode for bm | -| test.py:103:46:103:47 | ControlFlowNode for bm | test.py:98:46:98:47 | SSA variable bm | +| test.py:84:23:84:35 | ControlFlowNode for Attribute | test.py:77:23:77:24 | ControlFlowNode for bm | +| test.py:89:37:89:38 | ControlFlowNode for bm | test.py:91:10:91:12 | ControlFlowNode for val | +| test.py:94:46:94:47 | ControlFlowNode for bm | test.py:95:37:95:38 | ControlFlowNode for bm | +| test.py:95:37:95:38 | ControlFlowNode for bm | test.py:89:37:89:38 | ControlFlowNode for bm | +| test.py:98:46:98:47 | ControlFlowNode for bm | test.py:99:46:99:47 | ControlFlowNode for bm | +| test.py:99:46:99:47 | ControlFlowNode for bm | test.py:94:46:94:47 | ControlFlowNode for bm | +| test.py:102:46:102:47 | ControlFlowNode for bm | test.py:103:46:103:47 | ControlFlowNode for bm | +| test.py:103:46:103:47 | ControlFlowNode for bm | test.py:98:46:98:47 | ControlFlowNode for bm | | test.py:107:11:107:18 | ControlFlowNode for source() | test.py:108:46:108:58 | ControlFlowNode for Attribute | -| test.py:108:46:108:58 | ControlFlowNode for Attribute | test.py:102:46:102:47 | SSA variable bm | +| test.py:108:46:108:58 | ControlFlowNode for Attribute | test.py:102:46:102:47 | ControlFlowNode for bm | nodes | test.py:21:11:21:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:22:10:22:24 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | test.py:29:11:29:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:33:10:33:12 | ControlFlowNode for val | semmle.label | ControlFlowNode for val | -| test.py:39:15:39:17 | SSA variable arg | semmle.label | SSA variable arg | +| test.py:39:15:39:17 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | | test.py:41:10:41:12 | ControlFlowNode for val | semmle.label | ControlFlowNode for val | | test.py:45:11:45:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:46:15:46:17 | ControlFlowNode for src | semmle.label | ControlFlowNode for src | -| test.py:52:24:52:26 | SSA variable arg | semmle.label | SSA variable arg | +| test.py:52:24:52:26 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | | test.py:54:10:54:12 | ControlFlowNode for val | semmle.label | ControlFlowNode for val | -| test.py:57:33:57:35 | SSA variable arg | semmle.label | SSA variable arg | +| test.py:57:33:57:35 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | | test.py:58:24:58:26 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | -| test.py:61:33:61:35 | SSA variable arg | semmle.label | SSA variable arg | +| test.py:61:33:61:35 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | | test.py:62:33:62:35 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | -| test.py:65:33:65:35 | SSA variable arg | semmle.label | SSA variable arg | +| test.py:65:33:65:35 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | | test.py:66:33:66:35 | ControlFlowNode for arg | semmle.label | ControlFlowNode for arg | | test.py:70:11:70:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:71:33:71:35 | ControlFlowNode for src | semmle.label | ControlFlowNode for src | -| test.py:77:23:77:24 | SSA variable bm | semmle.label | SSA variable bm | +| test.py:77:23:77:24 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | | test.py:79:10:79:12 | ControlFlowNode for val | semmle.label | ControlFlowNode for val | | test.py:83:11:83:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:84:23:84:35 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | -| test.py:89:37:89:38 | SSA variable bm | semmle.label | SSA variable bm | +| test.py:89:37:89:38 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | | test.py:91:10:91:12 | ControlFlowNode for val | semmle.label | ControlFlowNode for val | -| test.py:94:46:94:47 | SSA variable bm | semmle.label | SSA variable bm | +| test.py:94:46:94:47 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | | test.py:95:37:95:38 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | -| test.py:98:46:98:47 | SSA variable bm | semmle.label | SSA variable bm | +| test.py:98:46:98:47 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | | test.py:99:46:99:47 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | -| test.py:102:46:102:47 | SSA variable bm | semmle.label | SSA variable bm | +| test.py:102:46:102:47 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | | test.py:103:46:103:47 | ControlFlowNode for bm | semmle.label | ControlFlowNode for bm | | test.py:107:11:107:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:108:46:108:58 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | diff --git a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.expected b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.expected index 63b5357bc7b4..002f8f25938d 100644 --- a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.expected +++ b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.expected @@ -1,85 +1,22 @@ -| code/f_finally.py:3:15:3:18 | ControlFlowNode for self | code/f_finally.py:4:9:4:12 | ControlFlowNode for self | -| code/f_finally.py:3:15:3:18 | ControlFlowNode for self | code/f_finally.py:6:13:6:16 | ControlFlowNode for self | -| code/f_finally.py:3:15:3:18 | ControlFlowNode for self | code/f_finally.py:8:21:8:24 | ControlFlowNode for self | -| code/f_finally.py:3:15:3:18 | ControlFlowNode for self | code/f_finally.py:8:21:8:24 | ControlFlowNode for self | -| code/f_finally.py:3:15:3:18 | ControlFlowNode for self | code/f_finally.py:10:17:10:20 | ControlFlowNode for self | -| code/f_finally.py:3:15:3:18 | ControlFlowNode for self | code/f_finally.py:10:17:10:20 | ControlFlowNode for self | -| code/g_class_init.py:5:18:5:21 | ControlFlowNode for self | code/g_class_init.py:6:9:6:12 | ControlFlowNode for self | -| code/g_class_init.py:5:18:5:21 | ControlFlowNode for self | code/g_class_init.py:7:9:7:12 | ControlFlowNode for self | -| code/g_class_init.py:5:18:5:21 | ControlFlowNode for self | code/g_class_init.py:10:9:10:12 | ControlFlowNode for self | -| code/g_class_init.py:5:18:5:21 | ControlFlowNode for self | code/g_class_init.py:11:9:11:12 | ControlFlowNode for self | -| code/g_class_init.py:5:18:5:21 | ControlFlowNode for self | code/g_class_init.py:14:9:14:12 | ControlFlowNode for self | -| code/g_class_init.py:16:16:16:19 | ControlFlowNode for self | code/g_class_init.py:17:13:17:16 | ControlFlowNode for self | -| code/g_class_init.py:16:16:16:19 | ControlFlowNode for self | code/g_class_init.py:18:23:18:26 | ControlFlowNode for self | -| code/g_class_init.py:16:16:16:19 | ControlFlowNode for self | code/g_class_init.py:19:17:19:20 | ControlFlowNode for self | -| code/g_class_init.py:16:16:16:19 | ControlFlowNode for self | code/g_class_init.py:20:13:20:16 | ControlFlowNode for self | -| code/g_class_init.py:34:18:34:21 | ControlFlowNode for self | code/g_class_init.py:35:18:35:21 | ControlFlowNode for self | -| code/g_class_init.py:34:18:34:21 | ControlFlowNode for self | code/g_class_init.py:36:25:36:28 | ControlFlowNode for self | -| code/g_class_init.py:46:18:46:21 | ControlFlowNode for self | code/g_class_init.py:48:13:48:16 | ControlFlowNode for self | -| code/g_class_init.py:46:18:46:21 | ControlFlowNode for self | code/g_class_init.py:50:13:50:16 | ControlFlowNode for self | -| code/g_class_init.py:52:14:52:17 | ControlFlowNode for self | code/g_class_init.py:53:12:53:15 | ControlFlowNode for self | | code/h_classes.py:3:1:3:16 | ControlFlowNode for ClassExpr | code/h_classes.py:10:1:10:9 | ControlFlowNode for type() | | code/h_classes.py:3:1:3:16 | ControlFlowNode for ClassExpr | code/h_classes.py:15:5:15:13 | ControlFlowNode for type() | -| code/h_classes.py:7:18:7:21 | ControlFlowNode for self | code/h_classes.py:8:9:8:12 | ControlFlowNode for self | -| code/h_classes.py:25:18:25:21 | ControlFlowNode for self | code/h_classes.py:27:13:27:16 | ControlFlowNode for self | -| code/h_classes.py:25:18:25:21 | ControlFlowNode for self | code/h_classes.py:29:13:29:16 | ControlFlowNode for self | -| code/h_classes.py:25:18:25:21 | ControlFlowNode for self | code/h_classes.py:31:13:31:16 | ControlFlowNode for self | -| code/k_getsetattr.py:6:15:6:18 | ControlFlowNode for self | code/k_getsetattr.py:7:17:7:20 | ControlFlowNode for self | -| code/k_getsetattr.py:6:15:6:18 | ControlFlowNode for self | code/k_getsetattr.py:8:17:8:20 | ControlFlowNode for self | -| code/k_getsetattr.py:6:15:6:18 | ControlFlowNode for self | code/k_getsetattr.py:9:17:9:20 | ControlFlowNode for self | -| code/k_getsetattr.py:6:15:6:18 | ControlFlowNode for self | code/k_getsetattr.py:10:17:10:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:7:17:7:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:8:17:8:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:9:17:9:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:10:17:10:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:13:17:13:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:14:17:14:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:15:9:15:12 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:16:17:16:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:17:17:17:20 | ControlFlowNode for self | -| code/k_getsetattr.py:12:15:12:18 | ControlFlowNode for self | code/k_getsetattr.py:18:17:18:20 | ControlFlowNode for self | | code/l_calls.py:3:13:3:14 | ControlFlowNode for List | code/l_calls.py:4:12:4:12 | ControlFlowNode for x | | code/l_calls.py:6:13:6:14 | ControlFlowNode for List | code/l_calls.py:7:16:7:16 | ControlFlowNode for x | | code/l_calls.py:12:1:12:20 | ControlFlowNode for ClassExpr | code/l_calls.py:16:16:16:18 | ControlFlowNode for cls | | code/l_calls.py:12:1:12:20 | ControlFlowNode for ClassExpr | code/l_calls.py:24:13:24:22 | ControlFlowNode for Attribute() | | code/l_calls.py:12:1:12:20 | ControlFlowNode for ClassExpr | code/l_calls.py:25:16:25:16 | ControlFlowNode for a | -| code/l_calls.py:23:11:23:14 | ControlFlowNode for self | code/l_calls.py:24:13:24:16 | ControlFlowNode for self | | code/l_calls.py:33:5:33:23 | ControlFlowNode for FunctionExpr | code/l_calls.py:39:1:39:3 | ControlFlowNode for Attribute | -| code/l_calls.py:33:11:33:14 | ControlFlowNode for self | code/l_calls.py:34:9:34:12 | ControlFlowNode for self | | code/l_calls.py:48:5:48:30 | ControlFlowNode for FunctionExpr | code/l_calls.py:53:1:53:3 | ControlFlowNode for Attribute | -| code/m_attributes.py:5:18:5:21 | ControlFlowNode for self | code/m_attributes.py:6:9:6:12 | ControlFlowNode for self | -| code/m_attributes.py:8:13:8:16 | ControlFlowNode for self | code/m_attributes.py:9:9:9:12 | ControlFlowNode for self | -| code/q_super.py:3:18:3:21 | ControlFlowNode for self | code/q_super.py:4:22:4:25 | ControlFlowNode for self | | code/q_super.py:10:18:10:21 | ControlFlowNode for self | code/q_super.py:4:22:4:25 | ControlFlowNode for self | -| code/q_super.py:10:18:10:21 | ControlFlowNode for self | code/q_super.py:11:22:11:25 | ControlFlowNode for self | -| code/q_super.py:10:18:10:21 | ControlFlowNode for self | code/q_super.py:12:32:12:35 | ControlFlowNode for self | -| code/q_super.py:21:14:21:17 | ControlFlowNode for self | code/q_super.py:22:32:22:35 | ControlFlowNode for self | | code/q_super.py:26:14:26:17 | ControlFlowNode for self | code/q_super.py:22:32:22:35 | ControlFlowNode for self | -| code/q_super.py:26:14:26:17 | ControlFlowNode for self | code/q_super.py:27:32:27:35 | ControlFlowNode for self | | code/q_super.py:31:14:31:17 | ControlFlowNode for self | code/q_super.py:22:32:22:35 | ControlFlowNode for self | -| code/q_super.py:31:14:31:17 | ControlFlowNode for self | code/q_super.py:32:32:32:35 | ControlFlowNode for self | | code/q_super.py:37:14:37:17 | ControlFlowNode for self | code/q_super.py:22:32:22:35 | ControlFlowNode for self | | code/q_super.py:37:14:37:17 | ControlFlowNode for self | code/q_super.py:27:32:27:35 | ControlFlowNode for self | -| code/q_super.py:37:14:37:17 | ControlFlowNode for self | code/q_super.py:38:32:38:35 | ControlFlowNode for self | | code/q_super.py:48:5:48:17 | ControlFlowNode for ClassExpr | code/q_super.py:51:25:51:29 | ControlFlowNode for Attribute | -| code/q_super.py:50:22:50:25 | ControlFlowNode for self | code/q_super.py:51:32:51:35 | ControlFlowNode for self | -| code/q_super.py:57:18:57:21 | ControlFlowNode for self | code/q_super.py:58:25:58:28 | ControlFlowNode for self | | code/q_super.py:63:5:63:17 | ControlFlowNode for ClassExpr | code/q_super.py:66:19:66:23 | ControlFlowNode for Attribute | -| code/q_super.py:65:22:65:25 | ControlFlowNode for self | code/q_super.py:66:26:66:29 | ControlFlowNode for self | -| code/q_super.py:73:18:73:21 | ControlFlowNode for self | code/q_super.py:74:22:74:25 | ControlFlowNode for self | -| code/r_regressions.py:7:18:7:21 | ControlFlowNode for self | code/r_regressions.py:9:9:9:12 | ControlFlowNode for self | -| code/r_regressions.py:7:18:7:21 | ControlFlowNode for self | code/r_regressions.py:12:9:12:12 | ControlFlowNode for self | -| code/r_regressions.py:7:18:7:21 | ControlFlowNode for self | code/r_regressions.py:13:9:13:12 | ControlFlowNode for self | -| code/r_regressions.py:15:15:15:18 | ControlFlowNode for self | code/r_regressions.py:16:9:16:12 | ControlFlowNode for self | -| code/r_regressions.py:15:15:15:18 | ControlFlowNode for self | code/r_regressions.py:18:13:18:16 | ControlFlowNode for self | -| code/r_regressions.py:15:15:15:18 | ControlFlowNode for self | code/r_regressions.py:20:21:20:24 | ControlFlowNode for self | -| code/r_regressions.py:15:15:15:18 | ControlFlowNode for self | code/r_regressions.py:20:21:20:24 | ControlFlowNode for self | -| code/r_regressions.py:15:15:15:18 | ControlFlowNode for self | code/r_regressions.py:22:17:22:20 | ControlFlowNode for self | -| code/r_regressions.py:15:15:15:18 | ControlFlowNode for self | code/r_regressions.py:22:17:22:20 | ControlFlowNode for self | | code/r_regressions.py:46:1:46:14 | ControlFlowNode for FunctionExpr | code/r_regressions.py:52:9:52:12 | ControlFlowNode for fail | | code/r_regressions.py:86:1:86:24 | ControlFlowNode for ClassExpr | code/r_regressions.py:85:2:85:33 | ControlFlowNode for method_decorator()() | | code/r_regressions.py:86:1:86:24 | ControlFlowNode for ClassExpr | code/r_regressions.py:90:1:90:9 | ControlFlowNode for TestFirst | | code/t_type.py:3:1:3:16 | ControlFlowNode for ClassExpr | code/t_type.py:6:1:6:9 | ControlFlowNode for type() | | code/t_type.py:3:1:3:16 | ControlFlowNode for ClassExpr | code/t_type.py:13:5:13:13 | ControlFlowNode for type() | | code/test_package/module2.py:5:5:5:6 | ControlFlowNode for Dict | code/j_convoluted_imports.py:25:1:25:1 | ControlFlowNode for r | -| code/v_pointsto_regressions.py:15:18:15:21 | ControlFlowNode for self | code/v_pointsto_regressions.py:19:9:19:12 | ControlFlowNode for self | diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected index 46b6ea0a406c..811d7f201096 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected @@ -12,29 +12,29 @@ edges | test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:31:9:31:16 | ControlFlowNode for source() | | test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:38:9:38:16 | ControlFlowNode for source() | | test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:46:9:46:16 | ControlFlowNode for source() | -| test.py:12:15:12:15 | SSA variable x | test.py:13:12:13:30 | ControlFlowNode for Attribute() | +| test.py:12:15:12:15 | ControlFlowNode for x | test.py:13:12:13:30 | ControlFlowNode for Attribute() | | test.py:13:12:13:30 | ControlFlowNode for Attribute() | test.py:25:9:25:20 | ControlFlowNode for normalize() | | test.py:13:12:13:30 | ControlFlowNode for Attribute() | test.py:48:13:48:24 | ControlFlowNode for normalize() | | test.py:18:9:18:16 | ControlFlowNode for source() | test.py:19:10:19:10 | ControlFlowNode for x | | test.py:24:9:24:16 | ControlFlowNode for source() | test.py:25:19:25:19 | ControlFlowNode for x | | test.py:25:9:25:20 | ControlFlowNode for normalize() | test.py:26:10:26:10 | ControlFlowNode for y | -| test.py:25:19:25:19 | ControlFlowNode for x | test.py:12:15:12:15 | SSA variable x | +| test.py:25:19:25:19 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | | test.py:31:9:31:16 | ControlFlowNode for source() | test.py:33:14:33:14 | ControlFlowNode for x | | test.py:38:9:38:16 | ControlFlowNode for source() | test.py:39:19:39:19 | ControlFlowNode for x | -| test.py:39:19:39:19 | ControlFlowNode for x | test.py:12:15:12:15 | SSA variable x | +| test.py:39:19:39:19 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | | test.py:46:9:46:16 | ControlFlowNode for source() | test.py:48:23:48:23 | ControlFlowNode for x | | test.py:48:13:48:24 | ControlFlowNode for normalize() | test.py:49:14:49:14 | ControlFlowNode for y | -| test.py:48:23:48:23 | ControlFlowNode for x | test.py:12:15:12:15 | SSA variable x | +| test.py:48:23:48:23 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | | test_chaining.py:9:12:9:23 | ControlFlowNode for Attribute | test_chaining.py:9:12:9:39 | ControlFlowNode for Attribute() | | test_chaining.py:9:12:9:39 | ControlFlowNode for Attribute() | test_chaining.py:20:9:20:16 | ControlFlowNode for source() | | test_chaining.py:9:12:9:39 | ControlFlowNode for Attribute() | test_chaining.py:28:9:28:16 | ControlFlowNode for source() | | test_chaining.py:9:12:9:39 | ControlFlowNode for Attribute() | test_chaining.py:41:9:41:16 | ControlFlowNode for source() | -| test_chaining.py:14:15:14:15 | SSA variable x | test_chaining.py:15:12:15:30 | ControlFlowNode for Attribute() | +| test_chaining.py:14:15:14:15 | ControlFlowNode for x | test_chaining.py:15:12:15:30 | ControlFlowNode for Attribute() | | test_chaining.py:15:12:15:30 | ControlFlowNode for Attribute() | test_chaining.py:31:13:31:24 | ControlFlowNode for normalize() | | test_chaining.py:20:9:20:16 | ControlFlowNode for source() | test_chaining.py:21:19:21:19 | ControlFlowNode for x | -| test_chaining.py:21:19:21:19 | ControlFlowNode for x | test_chaining.py:14:15:14:15 | SSA variable x | +| test_chaining.py:21:19:21:19 | ControlFlowNode for x | test_chaining.py:14:15:14:15 | ControlFlowNode for x | | test_chaining.py:28:9:28:16 | ControlFlowNode for source() | test_chaining.py:29:19:29:19 | ControlFlowNode for x | -| test_chaining.py:29:19:29:19 | ControlFlowNode for x | test_chaining.py:14:15:14:15 | SSA variable x | +| test_chaining.py:29:19:29:19 | ControlFlowNode for x | test_chaining.py:14:15:14:15 | ControlFlowNode for x | | test_chaining.py:31:13:31:24 | ControlFlowNode for normalize() | test_chaining.py:32:14:32:14 | ControlFlowNode for z | | test_chaining.py:41:9:41:16 | ControlFlowNode for source() | test_chaining.py:42:9:42:19 | ControlFlowNode for normpath() | | test_chaining.py:44:13:44:23 | ControlFlowNode for normpath() | test_chaining.py:45:14:45:14 | ControlFlowNode for z | @@ -53,7 +53,7 @@ nodes | test.py:9:12:9:23 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | | test.py:9:12:9:39 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | test.py:9:12:9:39 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | -| test.py:12:15:12:15 | SSA variable x | semmle.label | SSA variable x | +| test.py:12:15:12:15 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | | test.py:13:12:13:30 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | test.py:18:9:18:16 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:19:10:19:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | @@ -71,7 +71,7 @@ nodes | test.py:49:14:49:14 | ControlFlowNode for y | semmle.label | ControlFlowNode for y | | test_chaining.py:9:12:9:23 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | | test_chaining.py:9:12:9:39 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | -| test_chaining.py:14:15:14:15 | SSA variable x | semmle.label | SSA variable x | +| test_chaining.py:14:15:14:15 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | | test_chaining.py:15:12:15:30 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | test_chaining.py:20:9:20:16 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test_chaining.py:21:19:21:19 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | diff --git a/python/ql/test/query-tests/Security/CWE-089/SqlInjection.expected b/python/ql/test/query-tests/Security/CWE-089/SqlInjection.expected index 29bc6d5ceedb..a133d4039fe1 100644 --- a/python/ql/test/query-tests/Security/CWE-089/SqlInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-089/SqlInjection.expected @@ -1,16 +1,16 @@ edges -| sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | -| sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | -| sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | -| sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | nodes -| sql_injection.py:14:15:14:22 | SSA variable username | semmle.label | SSA variable username | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | semmle.label | ControlFlowNode for username | | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | | sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | | sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | | sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | #select -| sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | SSA variable username | a user-provided value | -| sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | SSA variable username | a user-provided value | -| sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | SSA variable username | a user-provided value | -| sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | SSA variable username | sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | SSA variable username | a user-provided value | +| sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | ControlFlowNode for username | a user-provided value | +| sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | ControlFlowNode for username | a user-provided value | +| sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | ControlFlowNode for username | a user-provided value | +| sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | This SQL query depends on $@. | sql_injection.py:14:15:14:22 | ControlFlowNode for username | a user-provided value |