Skip to content

Commit 1a2be46

Browse files
yoffCopilot
andcommitted
Python: update dataflow tests for new CFG + shared SSA
Test-side changes accompanying the dataflow migration: * Test queries (.ql) and shared test harness (TestSummaries, TestTaintLib) qualify CFG / SSA types with Cfg:: / SsaImpl::, bridge via AST (Name, Call, ...) instead of legacy NameNode / CallNode, and switch GlobalSsaVariable / EssaVariable usages to the new adapter API. * .expected files updated for legitimate precision and toString changes: - phi-node def-use edges newly exposed in def_use_counts. - scope-exit synthetic use surfaces one extra implicit use in use-use-counts. - For [empty]/[non-empty] outcome rows added in EnclosingCallable. - SsaSourceVariable / Global Variable label cosmetics normalised throughout. * Inline annotations: - typetracking/test.py: removed MISSING:tracked on lines 93/95 (now found), added SPURIOUS:tracked on line 108 (decorator over-reach). - global-flow/test.py: added SPURIOUS writes=g_mod on line 20 (correctly reports immediately-overwritten write). - tainttracking/customSanitizer/test.py: marked try/except: ensure_tainted(s) cases as MISSING: tainted (no-raise CFG abstraction does not connect try body to except body). - coverage/test.py: marked SINK(return_from_inner_scope([])) as MISSING: flow=... pending closer investigation. * regression/{dataflow,custom_dataflow}.expected: accept two if/else cond-correlation over-reaches (documented limitation; same imprecision applies under legacy semantics by design). After this change the dataflow library-tests stand at 62 of 64 passing; the two remaining failures are tracked under the ImportStarRefinement workstream. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 26df394 commit 1a2be46

42 files changed

Lines changed: 616 additions & 585 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
| test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
2-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x |
3-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
1+
| test.py:4:10:4:10 | z | test.py:7:5:7:20 | After obfuscated_id() |
2+
| test.py:7:19:7:19 | a | test.py:1:19:1:19 | x |
3+
| test.py:7:19:7:19 | a | test.py:7:5:7:20 | After obfuscated_id() |
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
| test.py:1:1:1:21 | SynthDictSplatParameterNode |
2-
| test.py:1:19:1:19 | ControlFlowNode for x |
3-
| test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
2+
| test.py:1:19:1:19 | x |
3+
| test.py:7:5:7:20 | After obfuscated_id() |
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
| test.py:4:10:4:10 | ControlFlowNode for z |
2-
| test.py:7:19:7:19 | ControlFlowNode for a |
1+
| test.py:4:10:4:10 | z |
2+
| test.py:7:19:7:19 | a |
Lines changed: 73 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,73 @@
1-
| test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:0:0:0:0 | ModuleVariableNode in Module test for obfuscated_id |
2-
| test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:1:5:1:17 | ControlFlowNode for obfuscated_id |
3-
| test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id |
4-
| test.py:1:5:1:17 | ControlFlowNode for obfuscated_id | test.py:0:0:0:0 | ModuleVariableNode in Module test for obfuscated_id |
5-
| test.py:1:5:1:17 | ControlFlowNode for obfuscated_id | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id |
6-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
7-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
8-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x |
9-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:3:3:3 | ControlFlowNode for z |
10-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y |
11-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z |
12-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:7:1:7:1 | ControlFlowNode for b |
13-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
14-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
15-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
16-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:7:3:7 | ControlFlowNode for y |
17-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:4:10:4:10 | ControlFlowNode for z |
18-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:7:1:7:1 | ControlFlowNode for b |
19-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
20-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
21-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
22-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:3:3:3:3 | ControlFlowNode for z |
23-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:3:7:3:7 | ControlFlowNode for y |
24-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:4:10:4:10 | ControlFlowNode for z |
25-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:7:1:7:1 | ControlFlowNode for b |
26-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
27-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
28-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:4:10:4:10 | ControlFlowNode for z |
29-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:7:1:7:1 | ControlFlowNode for b |
30-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
31-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
32-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
33-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:4:10:4:10 | ControlFlowNode for z |
34-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:7:1:7:1 | ControlFlowNode for b |
35-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
36-
| test.py:4:10:4:10 | ControlFlowNode for z | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
37-
| test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:1:7:1 | ControlFlowNode for b |
38-
| test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
39-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:0:0:0:0 | ModuleVariableNode in Module test for a |
40-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
41-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x |
42-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:2:3:2:3 | ControlFlowNode for y |
43-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:2:7:2:7 | ControlFlowNode for x |
44-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:3:3:3:3 | ControlFlowNode for z |
45-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:3:7:3:7 | ControlFlowNode for y |
46-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:4:10:4:10 | ControlFlowNode for z |
47-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:7:1:7:1 | ControlFlowNode for b |
48-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
49-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:7:19:7:19 | ControlFlowNode for a |
50-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:0:0:0:0 | ModuleVariableNode in Module test for a |
51-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
52-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:1:19:1:19 | ControlFlowNode for x |
53-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:2:3:2:3 | ControlFlowNode for y |
54-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:2:7:2:7 | ControlFlowNode for x |
55-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:3:3:3:3 | ControlFlowNode for z |
56-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:3:7:3:7 | ControlFlowNode for y |
57-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:4:10:4:10 | ControlFlowNode for z |
58-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:6:1:6:1 | ControlFlowNode for a |
59-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:7:1:7:1 | ControlFlowNode for b |
60-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
61-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:7:19:7:19 | ControlFlowNode for a |
62-
| test.py:7:1:7:1 | ControlFlowNode for b | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
63-
| test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
64-
| test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | test.py:7:1:7:1 | ControlFlowNode for b |
65-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
66-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x |
67-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:2:3:2:3 | ControlFlowNode for y |
68-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:2:7:2:7 | ControlFlowNode for x |
69-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:3:3:3:3 | ControlFlowNode for z |
70-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:3:7:3:7 | ControlFlowNode for y |
71-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:4:10:4:10 | ControlFlowNode for z |
72-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:1:7:1 | ControlFlowNode for b |
73-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
1+
| test.py:1:1:1:21 | FunctionExpr | test.py:0:0:0:0 | ModuleVariableNode in Module test for obfuscated_id |
2+
| test.py:1:1:1:21 | FunctionExpr | test.py:1:5:1:17 | obfuscated_id |
3+
| test.py:1:1:1:21 | FunctionExpr | test.py:7:5:7:17 | obfuscated_id |
4+
| test.py:1:5:1:17 | obfuscated_id | test.py:0:0:0:0 | ModuleVariableNode in Module test for obfuscated_id |
5+
| test.py:1:5:1:17 | obfuscated_id | test.py:7:5:7:17 | obfuscated_id |
6+
| test.py:1:19:1:19 | x | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
7+
| test.py:1:19:1:19 | x | test.py:2:3:2:3 | y |
8+
| test.py:1:19:1:19 | x | test.py:2:7:2:7 | x |
9+
| test.py:1:19:1:19 | x | test.py:3:3:3:3 | z |
10+
| test.py:1:19:1:19 | x | test.py:3:7:3:7 | y |
11+
| test.py:1:19:1:19 | x | test.py:4:10:4:10 | z |
12+
| test.py:1:19:1:19 | x | test.py:7:1:7:1 | b |
13+
| test.py:1:19:1:19 | x | test.py:7:5:7:20 | After obfuscated_id() |
14+
| test.py:2:3:2:3 | y | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
15+
| test.py:2:3:2:3 | y | test.py:3:3:3:3 | z |
16+
| test.py:2:3:2:3 | y | test.py:3:7:3:7 | y |
17+
| test.py:2:3:2:3 | y | test.py:4:10:4:10 | z |
18+
| test.py:2:3:2:3 | y | test.py:7:1:7:1 | b |
19+
| test.py:2:3:2:3 | y | test.py:7:5:7:20 | After obfuscated_id() |
20+
| test.py:2:7:2:7 | x | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
21+
| test.py:2:7:2:7 | x | test.py:2:3:2:3 | y |
22+
| test.py:2:7:2:7 | x | test.py:3:3:3:3 | z |
23+
| test.py:2:7:2:7 | x | test.py:3:7:3:7 | y |
24+
| test.py:2:7:2:7 | x | test.py:4:10:4:10 | z |
25+
| test.py:2:7:2:7 | x | test.py:7:1:7:1 | b |
26+
| test.py:2:7:2:7 | x | test.py:7:5:7:20 | After obfuscated_id() |
27+
| test.py:3:3:3:3 | z | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
28+
| test.py:3:3:3:3 | z | test.py:4:10:4:10 | z |
29+
| test.py:3:3:3:3 | z | test.py:7:1:7:1 | b |
30+
| test.py:3:3:3:3 | z | test.py:7:5:7:20 | After obfuscated_id() |
31+
| test.py:3:7:3:7 | y | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
32+
| test.py:3:7:3:7 | y | test.py:3:3:3:3 | z |
33+
| test.py:3:7:3:7 | y | test.py:4:10:4:10 | z |
34+
| test.py:3:7:3:7 | y | test.py:7:1:7:1 | b |
35+
| test.py:3:7:3:7 | y | test.py:7:5:7:20 | After obfuscated_id() |
36+
| test.py:4:10:4:10 | z | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
37+
| test.py:4:10:4:10 | z | test.py:7:1:7:1 | b |
38+
| test.py:4:10:4:10 | z | test.py:7:5:7:20 | After obfuscated_id() |
39+
| test.py:6:1:6:1 | a | test.py:0:0:0:0 | ModuleVariableNode in Module test for a |
40+
| test.py:6:1:6:1 | a | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
41+
| test.py:6:1:6:1 | a | test.py:1:19:1:19 | x |
42+
| test.py:6:1:6:1 | a | test.py:2:3:2:3 | y |
43+
| test.py:6:1:6:1 | a | test.py:2:7:2:7 | x |
44+
| test.py:6:1:6:1 | a | test.py:3:3:3:3 | z |
45+
| test.py:6:1:6:1 | a | test.py:3:7:3:7 | y |
46+
| test.py:6:1:6:1 | a | test.py:4:10:4:10 | z |
47+
| test.py:6:1:6:1 | a | test.py:7:1:7:1 | b |
48+
| test.py:6:1:6:1 | a | test.py:7:5:7:20 | After obfuscated_id() |
49+
| test.py:6:1:6:1 | a | test.py:7:19:7:19 | a |
50+
| test.py:6:5:6:6 | IntegerLiteral | test.py:0:0:0:0 | ModuleVariableNode in Module test for a |
51+
| test.py:6:5:6:6 | IntegerLiteral | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
52+
| test.py:6:5:6:6 | IntegerLiteral | test.py:1:19:1:19 | x |
53+
| test.py:6:5:6:6 | IntegerLiteral | test.py:2:3:2:3 | y |
54+
| test.py:6:5:6:6 | IntegerLiteral | test.py:2:7:2:7 | x |
55+
| test.py:6:5:6:6 | IntegerLiteral | test.py:3:3:3:3 | z |
56+
| test.py:6:5:6:6 | IntegerLiteral | test.py:3:7:3:7 | y |
57+
| test.py:6:5:6:6 | IntegerLiteral | test.py:4:10:4:10 | z |
58+
| test.py:6:5:6:6 | IntegerLiteral | test.py:6:1:6:1 | a |
59+
| test.py:6:5:6:6 | IntegerLiteral | test.py:7:1:7:1 | b |
60+
| test.py:6:5:6:6 | IntegerLiteral | test.py:7:5:7:20 | After obfuscated_id() |
61+
| test.py:6:5:6:6 | IntegerLiteral | test.py:7:19:7:19 | a |
62+
| test.py:7:1:7:1 | b | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
63+
| test.py:7:5:7:20 | After obfuscated_id() | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
64+
| test.py:7:5:7:20 | After obfuscated_id() | test.py:7:1:7:1 | b |
65+
| test.py:7:19:7:19 | a | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
66+
| test.py:7:19:7:19 | a | test.py:1:19:1:19 | x |
67+
| test.py:7:19:7:19 | a | test.py:2:3:2:3 | y |
68+
| test.py:7:19:7:19 | a | test.py:2:7:2:7 | x |
69+
| test.py:7:19:7:19 | a | test.py:3:3:3:3 | z |
70+
| test.py:7:19:7:19 | a | test.py:3:7:3:7 | y |
71+
| test.py:7:19:7:19 | a | test.py:4:10:4:10 | z |
72+
| test.py:7:19:7:19 | a | test.py:7:1:7:1 | b |
73+
| test.py:7:19:7:19 | a | test.py:7:5:7:20 | After obfuscated_id() |
Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
| test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:1:5:1:17 | ControlFlowNode for obfuscated_id |
2-
| test.py:1:1:1:21 | ControlFlowNode for FunctionExpr | test.py:1:5:1:17 | ControlFlowNode for obfuscated_id |
3-
| test.py:1:5:1:17 | ControlFlowNode for obfuscated_id | test.py:0:0:0:0 | ModuleVariableNode in Module test for obfuscated_id |
4-
| test.py:1:5:1:17 | ControlFlowNode for obfuscated_id | test.py:7:5:7:17 | ControlFlowNode for obfuscated_id |
5-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
6-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
7-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
8-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
9-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x |
10-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x |
11-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x |
12-
| test.py:1:19:1:19 | ControlFlowNode for x | test.py:2:7:2:7 | ControlFlowNode for x |
13-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
14-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
15-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
16-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
17-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:7:3:7 | ControlFlowNode for y |
18-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:7:3:7 | ControlFlowNode for y |
19-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:7:3:7 | ControlFlowNode for y |
20-
| test.py:2:3:2:3 | ControlFlowNode for y | test.py:3:7:3:7 | ControlFlowNode for y |
21-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
22-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
23-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
24-
| test.py:2:7:2:7 | ControlFlowNode for x | test.py:2:3:2:3 | ControlFlowNode for y |
25-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:4:10:4:10 | ControlFlowNode for z |
26-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:4:10:4:10 | ControlFlowNode for z |
27-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:4:10:4:10 | ControlFlowNode for z |
28-
| test.py:3:3:3:3 | ControlFlowNode for z | test.py:4:10:4:10 | ControlFlowNode for z |
29-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
30-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
31-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
32-
| test.py:3:7:3:7 | ControlFlowNode for y | test.py:3:3:3:3 | ControlFlowNode for z |
33-
| test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
34-
| test.py:4:10:4:10 | ControlFlowNode for z | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
35-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:0:0:0:0 | ModuleVariableNode in Module test for a |
36-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:7:19:7:19 | ControlFlowNode for a |
37-
| test.py:6:1:6:1 | ControlFlowNode for a | test.py:7:19:7:19 | ControlFlowNode for a |
38-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:6:1:6:1 | ControlFlowNode for a |
39-
| test.py:6:5:6:6 | ControlFlowNode for IntegerLiteral | test.py:6:1:6:1 | ControlFlowNode for a |
40-
| test.py:7:1:7:1 | ControlFlowNode for b | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
41-
| test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | test.py:7:1:7:1 | ControlFlowNode for b |
42-
| test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() | test.py:7:1:7:1 | ControlFlowNode for b |
43-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x |
44-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:1:19:1:19 | ControlFlowNode for x |
45-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
46-
| test.py:7:19:7:19 | ControlFlowNode for a | test.py:7:5:7:20 | ControlFlowNode for obfuscated_id() |
1+
| test.py:1:1:1:21 | FunctionExpr | test.py:1:5:1:17 | obfuscated_id |
2+
| test.py:1:1:1:21 | FunctionExpr | test.py:1:5:1:17 | obfuscated_id |
3+
| test.py:1:5:1:17 | obfuscated_id | test.py:0:0:0:0 | ModuleVariableNode in Module test for obfuscated_id |
4+
| test.py:1:5:1:17 | obfuscated_id | test.py:7:5:7:17 | obfuscated_id |
5+
| test.py:1:19:1:19 | x | test.py:2:3:2:3 | y |
6+
| test.py:1:19:1:19 | x | test.py:2:3:2:3 | y |
7+
| test.py:1:19:1:19 | x | test.py:2:3:2:3 | y |
8+
| test.py:1:19:1:19 | x | test.py:2:3:2:3 | y |
9+
| test.py:1:19:1:19 | x | test.py:2:7:2:7 | x |
10+
| test.py:1:19:1:19 | x | test.py:2:7:2:7 | x |
11+
| test.py:1:19:1:19 | x | test.py:2:7:2:7 | x |
12+
| test.py:1:19:1:19 | x | test.py:2:7:2:7 | x |
13+
| test.py:2:3:2:3 | y | test.py:3:3:3:3 | z |
14+
| test.py:2:3:2:3 | y | test.py:3:3:3:3 | z |
15+
| test.py:2:3:2:3 | y | test.py:3:3:3:3 | z |
16+
| test.py:2:3:2:3 | y | test.py:3:3:3:3 | z |
17+
| test.py:2:3:2:3 | y | test.py:3:7:3:7 | y |
18+
| test.py:2:3:2:3 | y | test.py:3:7:3:7 | y |
19+
| test.py:2:3:2:3 | y | test.py:3:7:3:7 | y |
20+
| test.py:2:3:2:3 | y | test.py:3:7:3:7 | y |
21+
| test.py:2:7:2:7 | x | test.py:2:3:2:3 | y |
22+
| test.py:2:7:2:7 | x | test.py:2:3:2:3 | y |
23+
| test.py:2:7:2:7 | x | test.py:2:3:2:3 | y |
24+
| test.py:2:7:2:7 | x | test.py:2:3:2:3 | y |
25+
| test.py:3:3:3:3 | z | test.py:4:10:4:10 | z |
26+
| test.py:3:3:3:3 | z | test.py:4:10:4:10 | z |
27+
| test.py:3:3:3:3 | z | test.py:4:10:4:10 | z |
28+
| test.py:3:3:3:3 | z | test.py:4:10:4:10 | z |
29+
| test.py:3:7:3:7 | y | test.py:3:3:3:3 | z |
30+
| test.py:3:7:3:7 | y | test.py:3:3:3:3 | z |
31+
| test.py:3:7:3:7 | y | test.py:3:3:3:3 | z |
32+
| test.py:3:7:3:7 | y | test.py:3:3:3:3 | z |
33+
| test.py:4:10:4:10 | z | test.py:7:5:7:20 | After obfuscated_id() |
34+
| test.py:4:10:4:10 | z | test.py:7:5:7:20 | After obfuscated_id() |
35+
| test.py:6:1:6:1 | a | test.py:0:0:0:0 | ModuleVariableNode in Module test for a |
36+
| test.py:6:1:6:1 | a | test.py:7:19:7:19 | a |
37+
| test.py:6:1:6:1 | a | test.py:7:19:7:19 | a |
38+
| test.py:6:5:6:6 | IntegerLiteral | test.py:6:1:6:1 | a |
39+
| test.py:6:5:6:6 | IntegerLiteral | test.py:6:1:6:1 | a |
40+
| test.py:7:1:7:1 | b | test.py:0:0:0:0 | ModuleVariableNode in Module test for b |
41+
| test.py:7:5:7:20 | After obfuscated_id() | test.py:7:1:7:1 | b |
42+
| test.py:7:5:7:20 | After obfuscated_id() | test.py:7:1:7:1 | b |
43+
| test.py:7:19:7:19 | a | test.py:1:19:1:19 | x |
44+
| test.py:7:19:7:19 | a | test.py:1:19:1:19 | x |
45+
| test.py:7:19:7:19 | a | test.py:7:5:7:20 | After obfuscated_id() |
46+
| test.py:7:19:7:19 | a | test.py:7:5:7:20 | After obfuscated_id() |

0 commit comments

Comments
 (0)