[python] CFG support logical expressions in if/while conditions

GitOrigin-RevId: 274b3271dccc93be64830374c8047a8f6552033e
This commit is contained in:
Petr
2024-11-15 23:59:34 +01:00
committed by intellij-monorepo-bot
parent 94aaceafb6
commit 3f8f4f40c3
52 changed files with 975 additions and 862 deletions

View File

@@ -8,6 +8,12 @@
7(8) READ ACCESS: x
8(9) READ ACCESS: int
9(10) element: PyCallExpression: isinstance
10(11) ASSERTTYPE ACCESS: s
11(12) ASSERTTYPE ACCESS: x
12() element: null
10(11) READ ACCESS: isinstance
11(12) READ ACCESS: s
12(13) READ ACCESS: basestring
13(14,16) element: PyCallExpression: isinstance
14(15) element: null. Condition: isinstance(s, basestring):false
15(18) ASSERTTYPE ACCESS: s
16(17) element: null. Condition: isinstance(s, basestring):true
17(18) ASSERTTYPE ACCESS: s
18() element: null

View File

@@ -2,10 +2,12 @@
1(2) element: PyAssignmentStatement
2(3) WRITE ACCESS: sibling
3(4) element: PyIfStatement
4(5,10) READ ACCESS: sibling
5(6) element: PyStatementList. Condition: sibling:true
6(7) ASSERTTYPE ACCESS: sibling
7(8) element: PyAssignmentStatement
8(9) element: PySubscriptionExpression
9(10) READ ACCESS: sibling
10() element: null
4(5,6) READ ACCESS: sibling
5(12) element: null. Condition: sibling:false
6(7) element: null. Condition: sibling:true
7(8) ASSERTTYPE ACCESS: sibling
8(9) element: PyStatementList
9(10) element: PyAssignmentStatement
10(11) element: PySubscriptionExpression
11(12) READ ACCESS: sibling
12() element: null

View File

@@ -9,20 +9,20 @@
8(9,10) WRITE ACCESS: r
9(14) element: null. Condition: (r := undefined2()):false
10(11) element: null. Condition: (r := undefined2()):true
11(12) element: PyStatementList. Condition: undefined1 and (r := undefined2()):true
11(12) element: PyStatementList
12(13) element: PyPrintStatement
13(1) READ ACCESS: r
14(15) element: PyWhileStatement
15(16) element: PyBinaryExpression
16(17,18) READ ACCESS: undefined3
17(24) element: null. Condition: undefined3:true
18(19) element: null. Condition: undefined3:false
17(19) element: null. Condition: undefined3:false
18(24) element: null. Condition: undefined3:true
19(20) READ ACCESS: undefined4
20(21) element: PyCallExpression: undefined4
21(22,23) WRITE ACCESS: r2
22(27) element: null. Condition: (r2 := undefined4()):false
23(24) element: null. Condition: (r2 := undefined4()):true
24(25) element: PyStatementList. Condition: undefined3 or (r2 := undefined4()):true
24(25) element: PyStatementList
25(26) element: PyPrintStatement
26(14) READ ACCESS: r2
27() element: null

View File

@@ -9,24 +9,24 @@
8(9,10) WRITE ACCESS: r
9(14) element: null. Condition: (r := undefined2()):false
10(11) element: null. Condition: (r := undefined2()):true
11(12) element: PyStatementList. Condition: undefined1 and (r := undefined2()):true
11(12) element: PyStatementList
12(13) element: PyPrintStatement
13(1) READ ACCESS: r
14(15) element: PyElsePart. Condition: undefined1 and (r := undefined2()):false
14(15) element: PyStatementList
15(16) element: PyPrintStatement
16(17) element: PyWhileStatement
17(18) element: PyBinaryExpression
18(19,20) READ ACCESS: undefined3
19(26) element: null. Condition: undefined3:true
20(21) element: null. Condition: undefined3:false
19(21) element: null. Condition: undefined3:false
20(26) element: null. Condition: undefined3:true
21(22) READ ACCESS: undefined4
22(23) element: PyCallExpression: undefined4
23(24,25) WRITE ACCESS: r2
24(29) element: null. Condition: (r2 := undefined4()):false
25(26) element: null. Condition: (r2 := undefined4()):true
26(27) element: PyStatementList. Condition: undefined3 or (r2 := undefined4()):true
26(27) element: PyStatementList
27(28) element: PyPrintStatement
28(16) READ ACCESS: r2
29(30) element: PyElsePart. Condition: undefined3 or (r2 := undefined4()):false
29(30) element: PyStatementList
30(31) element: PyPrintStatement
31() element: null

View File

@@ -1,11 +1,15 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,10) READ ACCESS: foo
3(4) element: PyStatementList. Condition: foo:true
4(5) element: PyIfStatement
5(6,9) READ ACCESS: condition
6(7) element: PyStatementList. Condition: condition:true
7(8) ASSERTTYPE ACCESS: condition
8(10) element: PyBreakStatement
9(1) element: PyPrintStatement
10() element: null
2(3,4) READ ACCESS: foo
3(14) element: null. Condition: foo:false
4(5) element: null. Condition: foo:true
5(6) element: PyStatementList
6(7) element: PyIfStatement
7(8,9) READ ACCESS: condition
8(13) element: null. Condition: condition:false
9(10) element: null. Condition: condition:true
10(11) ASSERTTYPE ACCESS: condition
11(12) element: PyStatementList
12(14) element: PyBreakStatement
13(1) element: PyPrintStatement
14() element: null

View File

@@ -8,9 +8,11 @@
7(8) WRITE ACCESS: c
8(9) element: PyAssignmentStatement
9(10) element: PyConditionalExpression
10(11,13) READ ACCESS: c
11(12) ASSERTTYPE ACCESS: c
12(14) READ ACCESS: x
13(14) READ ACCESS: y
14(15) WRITE ACCESS: z
15() element: null
10(11,12) READ ACCESS: c
11(15) element: null. Condition: c:false
12(13) element: null. Condition: c:true
13(14) ASSERTTYPE ACCESS: c
14(16) READ ACCESS: x
15(16) READ ACCESS: y
16(17) WRITE ACCESS: z
17() element: null

View File

@@ -1,11 +1,15 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,10) READ ACCESS: foo
3(4) element: PyStatementList. Condition: foo:true
4(5) element: PyIfStatement
5(6,9) READ ACCESS: condition
6(7) element: PyStatementList. Condition: condition:true
7(8) ASSERTTYPE ACCESS: condition
8(1) element: PyContinueStatement
9(1) element: PyPrintStatement
10() element: null
2(3,4) READ ACCESS: foo
3(14) element: null. Condition: foo:false
4(5) element: null. Condition: foo:true
5(6) element: PyStatementList
6(7) element: PyIfStatement
7(8,9) READ ACCESS: condition
8(13) element: null. Condition: condition:false
9(10) element: null. Condition: condition:true
10(11) ASSERTTYPE ACCESS: condition
11(12) element: PyStatementList
12(1) element: PyContinueStatement
13(1) element: PyPrintStatement
14() element: null

View File

@@ -7,13 +7,15 @@
6(7) element: PyIfStatement
7(8) READ ACCESS: len
8(9) READ ACCESS: s
9(10,12) element: PyCallExpression: len
10(11) element: PyStatementList. Condition: len(s) == 1:true
11(3,15) element: PyContinueStatement
12(13) element: PyExpressionStatement
13(14) READ ACCESS: sys
14(4,15) element: PyCallExpression: sys.exit
15(16) element: PyRaiseStatement
16(17) READ ACCESS: Exception
17(18) element: PyCallExpression: Exception
18() element: null
9(10,11) element: PyCallExpression: len
10(14) element: null. Condition: len(s) == 1:false
11(12) element: null. Condition: len(s) == 1:true
12(13) element: PyStatementList
13(3,17) element: PyContinueStatement
14(15) element: PyExpressionStatement
15(16) READ ACCESS: sys
16(4,17) element: PyCallExpression: sys.exit
17(18) element: PyRaiseStatement
18(19) READ ACCESS: Exception
19(20) element: PyCallExpression: Exception
20() element: null

View File

@@ -8,16 +8,18 @@
7(8) READ ACCESS: isinstance
8(9) READ ACCESS: str
9(10) READ ACCESS: int
10(11,17) element: PyCallExpression: isinstance
11(12) element: PyStatementList. Condition: isinstance(str, int):true
12(13) ASSERTTYPE ACCESS: str
13(14) element: PyExpressionStatement
14(15) READ ACCESS: self
15(16) element: PyCallExpression: self.fail
16(18) element: PyPrintStatement
17(18) ASSERTTYPE ACCESS: str
18(19) element: PyExpressionStatement
19(20) READ ACCESS: self
20(21) READ ACCESS: str
21(22) element: PyCallExpression: self.assert_
22() element: null
10(11,13) element: PyCallExpression: isinstance
11(12) element: null. Condition: isinstance(str, int):false
12(20) ASSERTTYPE ACCESS: str
13(14) element: null. Condition: isinstance(str, int):true
14(15) ASSERTTYPE ACCESS: str
15(16) element: PyStatementList
16(17) element: PyExpressionStatement
17(18) READ ACCESS: self
18(19) element: PyCallExpression: self.fail
19(20) element: PyPrintStatement
20(21) element: PyExpressionStatement
21(22) READ ACCESS: self
22(23) READ ACCESS: str
23(24) element: PyCallExpression: self.assert_
24() element: null

View File

@@ -1,11 +1,13 @@
0(1) element: null
1(2) element: PyForStatement
2(3,10) READ ACCESS: lines
2(3,12) READ ACCESS: lines
3(4) element: PyTargetExpression: line
4(5) WRITE ACCESS: line
5(6) element: PyIfStatement
6(7,3,10) READ ACCESS: line
7(8) element: PyStatementList. Condition: line == '@':true
8(9) element: PyAssignmentStatement
9(3,10) WRITE ACCESS: head
10() element: null
6(7,8) READ ACCESS: line
7(3,12) element: null. Condition: line == '@':false
8(9) element: null. Condition: line == '@':true
9(10) element: PyStatementList
10(11) element: PyAssignmentStatement
11(3,12) WRITE ACCESS: head
12() element: null

View File

@@ -15,7 +15,7 @@
14(15,16) READ ACCESS: end
15(3,20) element: null. Condition: hour < end:false
16(17) element: null. Condition: hour < end:true
17(18) element: PyStatementList. Condition: hour >= start and hour < end:true
17(18) element: PyStatementList
18(19) element: PyReturnStatement
19(20) READ ACCESS: name
20() element: null

View File

@@ -25,34 +25,32 @@
24(25) element: PyBinaryExpression
25(26) element: PyBinaryExpression
26(27,28) READ ACCESS: collapse
27(34) element: null. Condition: collapse:false
27(32) element: null. Condition: collapse:false
28(29) element: null. Condition: collapse:true
29(30,31) element: PyLambdaExpression
30(34) element: null. Condition: (lambda s: " ".join(s.split())):false
31(32,33) element: null. Condition: (lambda s: " ".join(s.split())):true
32(37) element: null. Condition: collapse and (lambda s: " ".join(s.split())):true
33(34) element: null. Condition: collapse and (lambda s: " ".join(s.split())):false
34(35,36) element: PyLambdaExpression
35(37) element: null. Condition: (lambda s: s):false
36(37) element: null. Condition: (lambda s: s):true
37(38) WRITE ACCESS: processFunc
38(39) element: PyPrintStatement
39(40) element: PyListCompExpression
40(41) element: PyReferenceExpression: methodList
41(42,56) READ ACCESS: methodList
42(43) element: PyTargetExpression: method
43(44) WRITE ACCESS: method
44(45) element: PyBinaryExpression
45(46) READ ACCESS: method
46(47) READ ACCESS: spacing
47(48) element: PyCallExpression: method.ljust
48(49) READ ACCESS: processFunc
49(50) READ ACCESS: str
50(51) READ ACCESS: getattr
51(52) READ ACCESS: object
52(53) READ ACCESS: method
53(54) element: PyCallExpression: getattr
54(55) element: PyCallExpression: str
55(42,56) element: PyCallExpression: processFunc
56(57) element: PyCallExpression: "\n".join
57() element: null
30(32) element: null. Condition: (lambda s: " ".join(s.split())):false
31(35) element: null. Condition: (lambda s: " ".join(s.split())):true
32(33,34) element: PyLambdaExpression
33(35) element: null. Condition: (lambda s: s):false
34(35) element: null. Condition: (lambda s: s):true
35(36) WRITE ACCESS: processFunc
36(37) element: PyPrintStatement
37(38) element: PyListCompExpression
38(39) element: PyReferenceExpression: methodList
39(40,54) READ ACCESS: methodList
40(41) element: PyTargetExpression: method
41(42) WRITE ACCESS: method
42(43) element: PyBinaryExpression
43(44) READ ACCESS: method
44(45) READ ACCESS: spacing
45(46) element: PyCallExpression: method.ljust
46(47) READ ACCESS: processFunc
47(48) READ ACCESS: str
48(49) READ ACCESS: getattr
49(50) READ ACCESS: object
50(51) READ ACCESS: method
51(52) element: PyCallExpression: getattr
52(53) element: PyCallExpression: str
53(40,54) element: PyCallExpression: processFunc
54(55) element: PyCallExpression: "\n".join
55() element: null

View File

@@ -1,24 +1,34 @@
0(1) element: null
1(2,4) element: PyIfStatement
2(3) element: PyStatementList. Condition: 0j:true
3(4) element: PyPassStatement
4(5,7) element: PyIfStatement
5(6) element: PyStatementList. Condition: 1j:true
6(9) element: PyPassStatement
7(8) element: PyStatementList. Condition: 1j:false
8(9) element: PyPassStatement
9(10,12) element: PyIfStatement
10(11) element: PyStatementList. Condition: 2j:true
11(15) element: PyPassStatement
12(13,15) element: PyIfPartElif. Condition: 2j:false
13(14) element: PyStatementList. Condition: 3j:true
14(15) element: PyPassStatement
15(16,18) element: PyIfStatement
16(17) element: PyStatementList. Condition: 4j:true
17(23) element: PyPassStatement
18(19,21) element: PyIfPartElif. Condition: 4j:false
19(20) element: PyStatementList. Condition: 5j:true
20(23) element: PyPassStatement
21(22) element: PyStatementList. Condition: 5j:false
22(23) element: PyExpressionStatement
23() element: null
1(2,3) element: PyIfStatement
2(6) element: null. Condition: 0j:false
3(4) element: null. Condition: 0j:true
4(5) element: PyStatementList
5(6) element: PyPassStatement
6(7,8) element: PyIfStatement
7(11) element: null. Condition: 1j:false
8(9) element: null. Condition: 1j:true
9(10) element: PyStatementList
10(13) element: PyPassStatement
11(12) element: PyStatementList
12(13) element: PyPassStatement
13(14,15) element: PyIfStatement
14(18,19) element: null. Condition: 2j:false
15(16) element: null. Condition: 2j:true
16(17) element: PyStatementList
17(22) element: PyPassStatement
18(22) element: null. Condition: 3j:false
19(20) element: null. Condition: 3j:true
20(21) element: PyStatementList
21(22) element: PyPassStatement
22(23,24) element: PyIfStatement
23(27,28) element: null. Condition: 4j:false
24(25) element: null. Condition: 4j:true
25(26) element: PyStatementList
26(33) element: PyPassStatement
27(31) element: null. Condition: 5j:false
28(29) element: null. Condition: 5j:true
29(30) element: PyStatementList
30(33) element: PyPassStatement
31(32) element: PyStatementList
32(33) element: PyExpressionStatement
33() element: null

View File

@@ -1,26 +1,32 @@
0(1) element: null
1(2) element: PyIfStatement
2(3,6) READ ACCESS: c
3(4) element: PyStatementList. Condition: c:true
4(5) ASSERTTYPE ACCESS: c
5(12) element: PyPassStatement
6(7) element: PyIfPartElif. Condition: c:false
7(12) READ ACCESS: False
8(9) element: PyStatementList. Condition: False:true
9(10) ASSERTTYPE ACCESS: False
10(11) element: PyAssignmentStatement
11(12) WRITE ACCESS: a
12(13) element: PyIfStatement
13(14,17) READ ACCESS: d
14(15) element: PyStatementList. Condition: d:true
15(16) ASSERTTYPE ACCESS: d
16(25) element: PyPassStatement
17(18) element: PyIfPartElif. Condition: d:false
18(23) READ ACCESS: False
19(20) element: PyStatementList. Condition: False:true
20(21) ASSERTTYPE ACCESS: False
21(22) element: PyAssignmentStatement
22(25) WRITE ACCESS: b
23(24) element: PyStatementList. Condition: False:false
24(25) element: PyPassStatement
25() element: null
2(3,4) READ ACCESS: c
3(8) element: null. Condition: c:false
4(5) element: null. Condition: c:true
5(6) ASSERTTYPE ACCESS: c
6(7) element: PyStatementList
7(15) element: PyPassStatement
8(9,10) READ ACCESS: False
9(15) element: null. Condition: False:false
10(11) element: null. Condition: False:true
11() ASSERTTYPE ACCESS: False
12(13) element: PyStatementList
13(14) element: PyAssignmentStatement
14(15) WRITE ACCESS: a
15(16) element: PyIfStatement
16(17,18) READ ACCESS: d
17(22) element: null. Condition: d:false
18(19) element: null. Condition: d:true
19(20) ASSERTTYPE ACCESS: d
20(21) element: PyStatementList
21(31) element: PyPassStatement
22(23,24) READ ACCESS: False
23(29) element: null. Condition: False:false
24(25) element: null. Condition: False:true
25() ASSERTTYPE ACCESS: False
26(27) element: PyStatementList
27(28) element: PyAssignmentStatement
28(31) WRITE ACCESS: b
29(30) element: PyStatementList
30(31) element: PyPassStatement
31() element: null

View File

@@ -1,25 +1,31 @@
0(1) element: null
1(2) element: PyIfStatement
2(3,6) READ ACCESS: c
3(4) element: PyStatementList. Condition: c:true
4(5) ASSERTTYPE ACCESS: c
5(11) element: PyPassStatement
6(7) element: PyIfPartElif. Condition: c:false
7(8) READ ACCESS: True
8(9) element: PyStatementList. Condition: True:true
9(10) ASSERTTYPE ACCESS: True
10(11) element: PyPassStatement
11(12) element: PyIfStatement
12(13,16) READ ACCESS: d
13(14) element: PyStatementList. Condition: d:true
14(15) ASSERTTYPE ACCESS: d
15(24) element: PyPassStatement
16(17) element: PyIfPartElif. Condition: d:false
17(18) READ ACCESS: True
18(19) element: PyStatementList. Condition: True:true
19(20) ASSERTTYPE ACCESS: True
20(24) element: PyPassStatement
21(22) element: PyStatementList. Condition: True:false
22(23) element: PyAssignmentStatement
23(24) WRITE ACCESS: e
24() element: null
2(3,4) READ ACCESS: c
3(8) element: null. Condition: c:false
4(5) element: null. Condition: c:true
5(6) ASSERTTYPE ACCESS: c
6(7) element: PyStatementList
7(14) element: PyPassStatement
8(9,10) READ ACCESS: True
9(14) element: null. Condition: True:false
10(11) element: null. Condition: True:true
11(12) ASSERTTYPE ACCESS: True
12(13) element: PyStatementList
13(14) element: PyPassStatement
14(15) element: PyIfStatement
15(16,17) READ ACCESS: d
16(21) element: null. Condition: d:false
17(18) element: null. Condition: d:true
18(19) ASSERTTYPE ACCESS: d
19(20) element: PyStatementList
20(30) element: PyPassStatement
21(22,23) READ ACCESS: True
22() element: null. Condition: True:false
23(24) element: null. Condition: True:true
24(25) ASSERTTYPE ACCESS: True
25(26) element: PyStatementList
26(30) element: PyPassStatement
27(28) element: PyStatementList
28(29) element: PyAssignmentStatement
29(30) WRITE ACCESS: e
30() element: null

View File

@@ -1,17 +1,19 @@
0(1) element: null
1(2) element: PyIfStatement
2(3,13) READ ACCESS: markup
3(4) element: PyStatementList. Condition: markup:true
4(5) ASSERTTYPE ACCESS: markup
5(6) element: PyTryExceptStatement
6(7,9) element: PyTryPart
7(8,9) element: PyReturnStatement
8(9,16) READ ACCESS: renderer
9(10) element: PyExceptPart
10(11) READ ACCESS: KeyError
11(12) element: PyRaiseStatement
12(16) READ ACCESS: Error
13(14) element: PyStatementList. Condition: markup:false
14(15) element: PyReturnStatement
15(16) READ ACCESS: body
16() element: null
2(3,4) READ ACCESS: markup
3(15) element: null. Condition: markup:false
4(5) element: null. Condition: markup:true
5(6) ASSERTTYPE ACCESS: markup
6(7) element: PyStatementList
7(8) element: PyTryExceptStatement
8(9,11) element: PyTryPart
9(10,11) element: PyReturnStatement
10(11,18) READ ACCESS: renderer
11(12) element: PyExceptPart
12(13) READ ACCESS: KeyError
13(14) element: PyRaiseStatement
14(18) READ ACCESS: Error
15(16) element: PyStatementList
16(17) element: PyReturnStatement
17(18) READ ACCESS: body
18() element: null

View File

@@ -1,29 +1,36 @@
0(1) element: null
1(2) element: PyIfStatement
2(7) READ ACCESS: False
3(4) element: PyStatementList. Condition: False:true
4(5) ASSERTTYPE ACCESS: False
5(6) element: PyAssignmentStatement
6(7) WRITE ACCESS: a
7(8) element: PyIfStatement
8(13) READ ACCESS: False
9(10) element: PyStatementList. Condition: False:true
10(11) ASSERTTYPE ACCESS: False
11(12) element: PyAssignmentStatement
12(15) WRITE ACCESS: b
13(14) element: PyStatementList. Condition: False:false
14(15) element: PyPassStatement
15(16) element: PyIfStatement
16(21) READ ACCESS: False
17(18) element: PyStatementList. Condition: False:true
18(19) ASSERTTYPE ACCESS: False
19(20) element: PyAssignmentStatement
20(28) WRITE ACCESS: c
21(22) element: PyIfPartElif. Condition: False:false
22(23,26) READ ACCESS: d
23(24) element: PyStatementList. Condition: d:true
24(25) ASSERTTYPE ACCESS: d
25(28) element: PyPassStatement
26(27) element: PyStatementList. Condition: d:false
27(28) element: PyPassStatement
28() element: null
2(3,4) READ ACCESS: False
3(9) element: null. Condition: False:false
4(5) element: null. Condition: False:true
5() ASSERTTYPE ACCESS: False
6(7) element: PyStatementList
7(8) element: PyAssignmentStatement
8(9) WRITE ACCESS: a
9(10) element: PyIfStatement
10(11,12) READ ACCESS: False
11(17) element: null. Condition: False:false
12(13) element: null. Condition: False:true
13() ASSERTTYPE ACCESS: False
14(15) element: PyStatementList
15(16) element: PyAssignmentStatement
16(19) WRITE ACCESS: b
17(18) element: PyStatementList
18(19) element: PyPassStatement
19(20) element: PyIfStatement
20(21,22) READ ACCESS: False
21(27) element: null. Condition: False:false
22(23) element: null. Condition: False:true
23() ASSERTTYPE ACCESS: False
24(25) element: PyStatementList
25(26) element: PyAssignmentStatement
26(35) WRITE ACCESS: c
27(28,29) READ ACCESS: d
28(33) element: null. Condition: d:false
29(30) element: null. Condition: d:true
30(31) ASSERTTYPE ACCESS: d
31(32) element: PyStatementList
32(35) element: PyPassStatement
33(34) element: PyStatementList
34(35) element: PyPassStatement
35() element: null

View File

@@ -1,29 +1,36 @@
0(1) element: null
1(2) element: PyIfStatement
2(3) READ ACCESS: True
3(4) element: PyStatementList. Condition: True:true
4(5) ASSERTTYPE ACCESS: True
5(6) element: PyPassStatement
6(7) element: PyIfStatement
7(8) READ ACCESS: True
8(9) element: PyStatementList. Condition: True:true
9(10) ASSERTTYPE ACCESS: True
10(14) element: PyPassStatement
11(12) element: PyStatementList. Condition: True:false
12(13) element: PyAssignmentStatement
13(14) WRITE ACCESS: b
14(15) element: PyIfStatement
15(16) READ ACCESS: True
16(17) element: PyStatementList. Condition: True:true
17(18) ASSERTTYPE ACCESS: True
18(28) element: PyPassStatement
19(20) element: PyIfPartElif. Condition: True:false
20(21) READ ACCESS: c
21(22) element: PyStatementList. Condition: c:true
22(23) ASSERTTYPE ACCESS: c
23(24) element: PyAssignmentStatement
24(28) WRITE ACCESS: d
25(26) element: PyStatementList. Condition: c:false
26(27) element: PyAssignmentStatement
27(28) WRITE ACCESS: e
28() element: null
2(3,4) READ ACCESS: True
3(8) element: null. Condition: True:false
4(5) element: null. Condition: True:true
5(6) ASSERTTYPE ACCESS: True
6(7) element: PyStatementList
7(8) element: PyPassStatement
8(9) element: PyIfStatement
9(10,11) READ ACCESS: True
10() element: null. Condition: True:false
11(12) element: null. Condition: True:true
12(13) ASSERTTYPE ACCESS: True
13(14) element: PyStatementList
14(18) element: PyPassStatement
15(16) element: PyStatementList
16(17) element: PyAssignmentStatement
17(18) WRITE ACCESS: b
18(19) element: PyIfStatement
19(20,21) READ ACCESS: True
20(25) element: null. Condition: True:false
21(22) element: null. Condition: True:true
22(23) ASSERTTYPE ACCESS: True
23(24) element: PyStatementList
24(35) element: PyPassStatement
25(26,27) READ ACCESS: c
26() element: null. Condition: c:false
27(28) element: null. Condition: c:true
28() ASSERTTYPE ACCESS: c
29(30) element: PyStatementList
30(31) element: PyAssignmentStatement
31(35) WRITE ACCESS: d
32(33) element: PyStatementList
33(34) element: PyAssignmentStatement
34(35) WRITE ACCESS: e
35() element: null

View File

@@ -1,12 +1,14 @@
0(1) element: null
1(2) element: PyIfStatement
2(3) READ ACCESS: xs
3(4,8) READ ACCESS: None
4(5) element: PyStatementList. Condition: xs is None:true
5(6) ASSERTTYPE ACCESS: xs
6(7) element: PyAssignmentStatement
7(9) WRITE ACCESS: xs
8(9) ASSERTTYPE ACCESS: xs
9(10) element: PyPrintStatement
10(11) READ ACCESS: xs
11() element: null
3(4,6) READ ACCESS: None
4(5) element: null. Condition: xs is None:false
5(11) ASSERTTYPE ACCESS: xs
6(7) element: null. Condition: xs is None:true
7(8) ASSERTTYPE ACCESS: xs
8(9) element: PyStatementList
9(10) element: PyAssignmentStatement
10(11) WRITE ACCESS: xs
11(12) element: PyPrintStatement
12(13) READ ACCESS: xs
13() element: null

View File

@@ -3,20 +3,24 @@
2(3) READ ACCESS: isinstance
3(4) READ ACCESS: x
4(5) READ ACCESS: str
5(6,18) element: PyCallExpression: isinstance
6(7) element: PyStatementList. Condition: not isinstance(x, str):true
7(8) ASSERTTYPE ACCESS: x
8(9) element: PyIfStatement
9(10) READ ACCESS: x
10(11,15) READ ACCESS: None
11(12) element: PyStatementList. Condition: x is None:true
12(13) ASSERTTYPE ACCESS: x
13(14) element: PyPrintStatement
14(16) READ ACCESS: x
15(16) ASSERTTYPE ACCESS: x
16(17) element: PyPrintStatement
17(19) READ ACCESS: x
18(19) ASSERTTYPE ACCESS: x
5(6,8) element: PyCallExpression: isinstance
6(7) element: null. Condition: isinstance(x, str):false
7(10) ASSERTTYPE ACCESS: x
8(9) element: null. Condition: isinstance(x, str):true
9(23) ASSERTTYPE ACCESS: x
10(11) element: PyStatementList
11(12) element: PyIfStatement
12(13) READ ACCESS: x
13(14,16) READ ACCESS: None
14(15) element: null. Condition: x is None:false
15(21) ASSERTTYPE ACCESS: x
16(17) element: null. Condition: x is None:true
17(18) ASSERTTYPE ACCESS: x
18(19) element: PyStatementList
19(20) element: PyPrintStatement
20(21) READ ACCESS: x
21() element: null
21(22) element: PyPrintStatement
22(23) READ ACCESS: x
23(24) element: PyPrintStatement
24(25) READ ACCESS: x
25() element: null

View File

@@ -5,16 +5,18 @@
4(5) READ ACCESS: isinstance
5(6) READ ACCESS: s
6(7) READ ACCESS: basestring
7(8,14) element: PyCallExpression: isinstance
8(9) element: PyStatementList. Condition: (isinstance(s, basestring)):true
9(10) ASSERTTYPE ACCESS: s
10(11) element: PyAssignmentStatement
11(12) READ ACCESS: s
12(13) element: PyCallExpression: s.split
13(19) WRITE ACCESS: s2
14(15) element: PyStatementList. Condition: (isinstance(s, basestring)):false
15(16) ASSERTTYPE ACCESS: s
16(17) element: PyAssignmentStatement
17(18) READ ACCESS: s
18(19) WRITE ACCESS: x
19() element: null
7(8,10) element: PyCallExpression: isinstance
8(9) element: null. Condition: (isinstance(s, basestring)):false
9(17) ASSERTTYPE ACCESS: s
10(11) element: null. Condition: (isinstance(s, basestring)):true
11(12) ASSERTTYPE ACCESS: s
12(13) element: PyStatementList
13(14) element: PyAssignmentStatement
14(15) READ ACCESS: s
15(16) element: PyCallExpression: s.split
16(21) WRITE ACCESS: s2
17(18) element: PyStatementList
18(19) element: PyAssignmentStatement
19(20) READ ACCESS: s
20(21) WRITE ACCESS: x
21() element: null

View File

@@ -3,26 +3,31 @@
2(3) WRITE ACCESS: var
3(4) element: PyIfStatement
4(5) READ ACCESS: a
5(6,9) READ ACCESS: b
6(7) element: PyStatementList. Condition: a == b:true
7(8) element: PyAssignmentStatement
8(25) WRITE ACCESS: var
9(10) element: PyIfPartElif. Condition: a == b:false
10(11) READ ACCESS: aa
11(12,22) READ ACCESS: bb
12(13) element: PyStatementList. Condition: aa == bb:true
13(14) element: PyAssignmentStatement
14(15) READ ACCESS: same_changet_expression
15(16) WRITE ACCESS: bbb
16(17) element: PyIfStatement
17(18,25) READ ACCESS: bbb
18(19) element: PyStatementList. Condition: bbb:true
19(20) ASSERTTYPE ACCESS: bbb
20(21) element: PyAssignmentStatement
21(25) WRITE ACCESS: var
22(23) element: PyStatementList. Condition: aa == bb:false
23(24) element: PyAssignmentStatement
24(25) WRITE ACCESS: var
25(26) element: PyReturnStatement
26(27) READ ACCESS: var
27() element: null
5(6,7) READ ACCESS: b
6(11) element: null. Condition: a == b:false
7(8) element: null. Condition: a == b:true
8(9) element: PyStatementList
9(10) element: PyAssignmentStatement
10(30) WRITE ACCESS: var
11(12) READ ACCESS: aa
12(13,14) READ ACCESS: bb
13(27) element: null. Condition: aa == bb:false
14(15) element: null. Condition: aa == bb:true
15(16) element: PyStatementList
16(17) element: PyAssignmentStatement
17(18) READ ACCESS: same_changet_expression
18(19) WRITE ACCESS: bbb
19(20) element: PyIfStatement
20(21,22) READ ACCESS: bbb
21(30) element: null. Condition: bbb:false
22(23) element: null. Condition: bbb:true
23(24) ASSERTTYPE ACCESS: bbb
24(25) element: PyStatementList
25(26) element: PyAssignmentStatement
26(30) WRITE ACCESS: var
27(28) element: PyStatementList
28(29) element: PyAssignmentStatement
29(30) WRITE ACCESS: var
30(31) element: PyReturnStatement
31(32) READ ACCESS: var
32() element: null

View File

@@ -1,14 +1,16 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,11) READ ACCESS: x
3(4) element: PyStatementList. Condition: x:true
4(5) element: PyMatchStatement
5(6) READ ACCESS: x
6(7,9) refutable pattern: 42
7(8) matched pattern: 42
8(11) element: PyBreakStatement
9(10) element: PyExpressionStatement
10(1) READ ACCESS: y
2(3,4) READ ACCESS: x
3(13) element: null. Condition: x:false
4(5) element: null. Condition: x:true
5(6) element: PyStatementList
6(7) element: PyMatchStatement
7(8) READ ACCESS: x
8(9,11) refutable pattern: 42
9(10) matched pattern: 42
10(13) element: PyBreakStatement
11(12) element: PyExpressionStatement
12(13) READ ACCESS: z
13() element: null
12(1) READ ACCESS: y
13(14) element: PyExpressionStatement
14(15) READ ACCESS: z
15() element: null

View File

@@ -1,14 +1,16 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,11) READ ACCESS: x
3(4) element: PyStatementList. Condition: x:true
4(5) element: PyMatchStatement
5(6) READ ACCESS: x
6(7,9) refutable pattern: 42
7(8) matched pattern: 42
8(1) element: PyContinueStatement
9(10) element: PyExpressionStatement
10(1) READ ACCESS: y
2(3,4) READ ACCESS: x
3(13) element: null. Condition: x:false
4(5) element: null. Condition: x:true
5(6) element: PyStatementList
6(7) element: PyMatchStatement
7(8) READ ACCESS: x
8(9,11) refutable pattern: 42
9(10) matched pattern: 42
10(1) element: PyContinueStatement
11(12) element: PyExpressionStatement
12(13) READ ACCESS: z
13() element: null
12(1) READ ACCESS: y
13(14) element: PyExpressionStatement
14(15) READ ACCESS: z
15() element: null

View File

@@ -3,10 +3,10 @@
2(3) WRITE ACCESS: x
3(4) element: PyBinaryExpression
4(5,6) READ ACCESS: x
5(13) element: null. Condition: x > 0:false
5(10) element: null. Condition: x > 0:false
6(7) element: null. Condition: x > 0:true
7(8,9) READ ACCESS: x
8(13) element: null. Condition: x < 10:false
8(10) element: null. Condition: x < 10:false
9(10) element: null. Condition: x < 10:true
10(11) element: PyStatementList. Condition: x > 0 and x < 10:true
11(12) element: PyExpressionStatement

View File

@@ -3,20 +3,18 @@
2(3) WRITE ACCESS: x
3(4) element: PyBinaryExpression
4(5,6) READ ACCESS: x
5(19) element: null. Condition: x % 4 == 0:false
5(14) element: null. Condition: x % 4 == 0:false
6(7) element: null. Condition: x % 4 == 0:true
7(8) element: PyBinaryExpression
8(9,10) READ ACCESS: x
9(16) element: null. Condition: x % 400 == 0:true
10(11) element: null. Condition: x % 400 == 0:false
9(11) element: null. Condition: x % 400 == 0:false
10(14) element: null. Condition: x % 400 == 0:true
11(12,13) READ ACCESS: x
12(19) element: null. Condition: x % 100 != 0:false
13(14,15) element: null. Condition: x % 100 != 0:true
14(19) element: null. Condition: (x % 400 == 0 or x % 100 != 0):false
15(16) element: null. Condition: (x % 400 == 0 or x % 100 != 0):true
16(17) element: PyStatementList. Condition: x % 4 == 0 and (x % 400 == 0 or x % 100 != 0):true
12(14) element: null. Condition: x % 100 != 0:false
13(14) element: null. Condition: x % 100 != 0:true
14(15) element: PyStatementList. Condition: x % 4 == 0 and (x % 400 == 0 or x % 100 != 0):true
15(16) element: PyExpressionStatement
16(17) READ ACCESS: y
17(18) element: PyExpressionStatement
18(19) READ ACCESS: y
19(20) element: PyExpressionStatement
20(21) READ ACCESS: z
21() element: null
18(19) READ ACCESS: z
19() element: null

View File

@@ -3,10 +3,10 @@
2(3) WRITE ACCESS: x
3(4) element: PyBinaryExpression
4(5,6) READ ACCESS: x
5(10) element: null. Condition: x > 0:true
6(7) element: null. Condition: x > 0:false
5(7) element: null. Condition: x > 0:false
6(10) element: null. Condition: x > 0:true
7(8,9) READ ACCESS: x
8(13) element: null. Condition: x < 0:false
8(10) element: null. Condition: x < 0:false
9(10) element: null. Condition: x < 0:true
10(11) element: PyStatementList. Condition: x > 0 or x < 0:true
11(12) element: PyExpressionStatement

View File

@@ -7,8 +7,8 @@
6(7) matched pattern: [x1, x2, x3]
7(8) element: PyBinaryExpression
8(9,10) READ ACCESS: x1
9(14) element: null. Condition: x1:true
10(11) element: null. Condition: x1:false
9(11) element: null. Condition: x1:false
10(14) element: null. Condition: x1:true
11(12,13) READ ACCESS: x2
12(14) element: null. Condition: x2:false
13(14) element: null. Condition: x2:true

View File

@@ -5,10 +5,10 @@
4(5) matched pattern: [x]
5(6) element: PyBinaryExpression
6(7,8) READ ACCESS: x
7(15) element: null. Condition: x > 0:false
7(12) element: null. Condition: x > 0:false
8(9) element: null. Condition: x > 0:true
9(10,11) READ ACCESS: x
10(15) element: null. Condition: x % 2 == 0:false
10(12) element: null. Condition: x % 2 == 0:false
11(12) element: null. Condition: x % 2 == 0:true
12(13) element: PyStatementList. Condition: x > 0 and x % 2 == 0:true
13(14) element: PyExpressionStatement

View File

@@ -2,8 +2,8 @@
1(2) element: PyAssignmentStatement
2(3) element: PyBinaryExpression
3(4,5) READ ACCESS: bar
4(9) element: null. Condition: bar:true
5(6) element: null. Condition: bar:false
4(6) element: null. Condition: bar:false
5(9) element: null. Condition: bar:true
6(7,8) READ ACCESS: baz
7(9) element: null. Condition: baz:false
8(9) element: null. Condition: baz:true

View File

@@ -1,11 +1,15 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,10) READ ACCESS: foo
3(4) element: PyStatementList. Condition: foo:true
4(5) element: PyIfStatement
5(6,9) READ ACCESS: condition
6(7) element: PyStatementList. Condition: condition:true
7(8) ASSERTTYPE ACCESS: condition
8(10) element: PyReturnStatement
9(1) element: PyPrintStatement
10() element: null
2(3,4) READ ACCESS: foo
3(14) element: null. Condition: foo:false
4(5) element: null. Condition: foo:true
5(6) element: PyStatementList
6(7) element: PyIfStatement
7(8,9) READ ACCESS: condition
8(13) element: null. Condition: condition:false
9(10) element: null. Condition: condition:true
10(11) ASSERTTYPE ACCESS: condition
11(12) element: PyStatementList
12(14) element: PyReturnStatement
13(1) element: PyPrintStatement
14() element: null

View File

@@ -2,10 +2,12 @@
1(2) element: PyAssignmentStatement
2(3) WRITE ACCESS: sibling
3(4) element: PyIfStatement
4(5,10) READ ACCESS: sibling
5(6) element: PyStatementList. Condition: sibling:true
6(7) ASSERTTYPE ACCESS: sibling
7(8) element: PyAssignmentStatement
8(9) element: PySubscriptionExpression
9(10) READ ACCESS: sibling
10() element: null
4(5,6) READ ACCESS: sibling
5(12) element: null. Condition: sibling:false
6(7) element: null. Condition: sibling:true
7(8) ASSERTTYPE ACCESS: sibling
8(9) element: PyStatementList
9(10) element: PyAssignmentStatement
10(11) element: PySubscriptionExpression
11(12) READ ACCESS: sibling
12() element: null

View File

@@ -7,26 +7,30 @@
6(7,10) element: PyAssignmentStatement
7(8,10) READ ACCESS: open
8(9,10) element: PyCallExpression: open
9(10,19) WRITE ACCESS: status
9(10,21) WRITE ACCESS: status
10(11) element: PyFinallyPart
11(12) element: PyIfStatement
12(13) READ ACCESS: status
13(14,18) READ ACCESS: None
14(15) element: PyStatementList. Condition: status is not None:true
15(16) ASSERTTYPE ACCESS: status
16(17) element: PyPrintStatement
17(31) READ ACCESS: status
18(31) ASSERTTYPE ACCESS: status
19(20) element: PyFinallyPart
20(21) element: PyIfStatement
21(22) READ ACCESS: status
22(23,27) READ ACCESS: None
23(24) element: PyStatementList. Condition: status is not None:true
24(25) ASSERTTYPE ACCESS: status
25(26) element: PyPrintStatement
26(28) READ ACCESS: status
27(28) ASSERTTYPE ACCESS: status
28(29) element: PyExpressionStatement
29(30) READ ACCESS: status
30(31) element: PyCallExpression: status.close
31() element: null
13(14,16) READ ACCESS: None
14(15) element: null. Condition: status is not None:false
15() ASSERTTYPE ACCESS: status
16(17) element: null. Condition: status is not None:true
17(18) ASSERTTYPE ACCESS: status
18(19) element: PyStatementList
19(20) element: PyPrintStatement
20() READ ACCESS: status
21(22) element: PyFinallyPart
22(23) element: PyIfStatement
23(24) READ ACCESS: status
24(25,27) READ ACCESS: None
25(26) element: null. Condition: status is not None:false
26(32) ASSERTTYPE ACCESS: status
27(28) element: null. Condition: status is not None:true
28(29) ASSERTTYPE ACCESS: status
29(30) element: PyStatementList
30(31) element: PyPrintStatement
31(32) READ ACCESS: status
32(33) element: PyExpressionStatement
33(34) READ ACCESS: status
34(35) element: PyCallExpression: status.close
35() element: null

View File

@@ -2,64 +2,69 @@
1(2) element: PyAssignmentStatement
2(3) WRITE ACCESS: a
3(4) element: PyTryExceptStatement
4(5,56) element: PyTryPart
5(6,56) element: PyAssignmentStatement
6(7,56) WRITE ACCESS: b
7(8,56) element: PyForStatement
8(9,56) element: PyTargetExpression: x
9(10,56) WRITE ACCESS: x
10(11,56) element: PyTryExceptStatement
11(12,46) element: PyTryPart
12(13,46) element: PyAssignmentStatement
13(14,46) WRITE ACCESS: c
14(15,46) element: PyTryExceptStatement
15(16,38) element: PyTryPart
16(17,38) element: PyAssignmentStatement
17(18,38) WRITE ACCESS: d
18(19,38) element: PyIfStatement
19(20,22,38) READ ACCESS: x
20(21) element: PyStatementList. Condition: x == 0:true
21(38,41) element: PyBreakStatement
22(23,38) element: PyIfPartElif. Condition: x == 0:false
23(24,26,38) READ ACCESS: x
24(25) element: PyStatementList. Condition: x == 1:true
25(7,38,41) element: PyContinueStatement
26(27,38) element: PyIfPartElif. Condition: x == 1:false
27(28,32,38) READ ACCESS: x
28(29) element: PyStatementList. Condition: x == 2:true
29(30,38) element: PyRaiseStatement
30(31,38) READ ACCESS: Exception
31(38) element: PyCallExpression: Exception
32(33,38) element: PyIfPartElif. Condition: x == 2:false
33(34,36,38) READ ACCESS: x
34(35) element: PyStatementList. Condition: x == 3:true
35(38) element: PyReturnStatement
36(37,38) element: PyAssignmentStatement
37(38,41) WRITE ACCESS: e
38(39,46) element: PyFinallyPart
39(40,46) element: PyAssignmentStatement
40(46) WRITE ACCESS: f
41(42,46) element: PyFinallyPart
42(43,46) element: PyAssignmentStatement
43(44,46,49) WRITE ACCESS: f
44(45,46) element: PyAssignmentStatement
45(46,49) WRITE ACCESS: g
46(47,56) element: PyFinallyPart
47(48,56) element: PyAssignmentStatement
48(56) WRITE ACCESS: h
49(50,56) element: PyFinallyPart
50(51,56) element: PyAssignmentStatement
51(52,54,56) WRITE ACCESS: h
52(53,56) element: PyAssignmentStatement
53(8,54,56) WRITE ACCESS: i
54(55,56) element: PyAssignmentStatement
55(56,59) WRITE ACCESS: j
56(57) element: PyFinallyPart
57(58) element: PyAssignmentStatement
58(64) WRITE ACCESS: k
59(60) element: PyFinallyPart
60(61) element: PyAssignmentStatement
61(62) WRITE ACCESS: k
4(5,61) element: PyTryPart
5(6,61) element: PyAssignmentStatement
6(7,61) WRITE ACCESS: b
7(8,61) element: PyForStatement
8(9,61) element: PyTargetExpression: x
9(10,61) WRITE ACCESS: x
10(11,61) element: PyTryExceptStatement
11(12,51) element: PyTryPart
12(13,51) element: PyAssignmentStatement
13(14,51) WRITE ACCESS: c
14(15,51) element: PyTryExceptStatement
15(16,43) element: PyTryPart
16(17,43) element: PyAssignmentStatement
17(18,43) WRITE ACCESS: d
18(19,43) element: PyIfStatement
19(20,21,43) READ ACCESS: x
20(24) element: null. Condition: x == 0:false
21(22) element: null. Condition: x == 0:true
22(23) element: PyStatementList
23(43,46) element: PyBreakStatement
24(25,26,43) READ ACCESS: x
25(29) element: null. Condition: x == 1:false
26(27) element: null. Condition: x == 1:true
27(28) element: PyStatementList
28(7,43,46) element: PyContinueStatement
29(30,31,43) READ ACCESS: x
30(36) element: null. Condition: x == 2:false
31(32) element: null. Condition: x == 2:true
32(33) element: PyStatementList
33(34,43) element: PyRaiseStatement
34(35,43) READ ACCESS: Exception
35(43) element: PyCallExpression: Exception
36(37,38,43) READ ACCESS: x
37(41) element: null. Condition: x == 3:false
38(39) element: null. Condition: x == 3:true
39(40) element: PyStatementList
40(43) element: PyReturnStatement
41(42,43) element: PyAssignmentStatement
42(43,46) WRITE ACCESS: e
43(44,51) element: PyFinallyPart
44(45,51) element: PyAssignmentStatement
45(51) WRITE ACCESS: f
46(47,51) element: PyFinallyPart
47(48,51) element: PyAssignmentStatement
48(49,51,54) WRITE ACCESS: f
49(50,51) element: PyAssignmentStatement
50(51,54) WRITE ACCESS: g
51(52,61) element: PyFinallyPart
52(53,61) element: PyAssignmentStatement
53(61) WRITE ACCESS: h
54(55,61) element: PyFinallyPart
55(56,61) element: PyAssignmentStatement
56(57,59,61) WRITE ACCESS: h
57(58,61) element: PyAssignmentStatement
58(8,59,61) WRITE ACCESS: i
59(60,61) element: PyAssignmentStatement
60(61,64) WRITE ACCESS: j
61(62) element: PyFinallyPart
62(63) element: PyAssignmentStatement
63(64) WRITE ACCESS: l
64() element: null
63(69) WRITE ACCESS: k
64(65) element: PyFinallyPart
65(66) element: PyAssignmentStatement
66(67) WRITE ACCESS: k
67(68) element: PyAssignmentStatement
68(69) WRITE ACCESS: l
69() element: null

View File

@@ -22,10 +22,12 @@
21(22) element: PyIfStatement
22(23) READ ACCESS: checkit
23(24) READ ACCESS: x
24(25,28) element: PyCallExpression: checkit
25(26) element: PyStatementList. Condition: checkit(x):true
26(27) element: PyPrintStatement
27(30) READ ACCESS: x
28(29) element: PyStatementList. Condition: checkit(x):false
29(30) element: PyPassStatement
30() element: null
24(25,26) element: PyCallExpression: checkit
25(30) element: null. Condition: checkit(x):false
26(27) element: null. Condition: checkit(x):true
27(28) element: PyStatementList
28(29) element: PyPrintStatement
29(32) READ ACCESS: x
30(31) element: PyStatementList
31(32) element: PyPassStatement
32() element: null

View File

@@ -22,10 +22,12 @@
21(22) element: PyWhileStatement
22(23) READ ACCESS: checkit
23(24) READ ACCESS: x
24(25,30) element: PyCallExpression: checkit
25(26) element: PyStatementList. Condition: checkit(x):true
26(27) element: PyAssignmentStatement
27(28) READ ACCESS: foo
28(29) element: PyCallExpression: foo.bar
29(21) WRITE ACCESS: x
30() element: null
24(25,26) element: PyCallExpression: checkit
25(32) element: null. Condition: checkit(x):false
26(27) element: null. Condition: checkit(x):true
27(28) element: PyStatementList
28(29) element: PyAssignmentStatement
29(30) READ ACCESS: foo
30(31) element: PyCallExpression: foo.bar
31(21) WRITE ACCESS: x
32() element: null

View File

@@ -10,15 +10,14 @@
9(10) READ ACCESS: isinstance
10(11) READ ACCESS: var
11(12) READ ACCESS: A
12(13,14) element: PyCallExpression: isinstance
13(22) element: null. Condition: isinstance(var, A):false
14(15) element: null. Condition: isinstance(var, A):true
15(16) ASSERTTYPE ACCESS: var
16(17,18) READ ACCESS: var
17(22) element: null. Condition: var:false
18(19) element: null. Condition: var:true
19(20) element: PyStatementList. Condition: isinstance(var, A) and var:true
20(21) ASSERTTYPE ACCESS: var
21(23) element: PyPassStatement
22(23) ASSERTTYPE ACCESS: var
23() element: null
12(13,15) element: PyCallExpression: isinstance
13(14) element: null. Condition: isinstance(var, A):false
14(22) ASSERTTYPE ACCESS: var
15(16) element: null. Condition: isinstance(var, A):true
16(17) ASSERTTYPE ACCESS: var
17(18,19) READ ACCESS: var
18(22) element: null. Condition: var:false
19(20) element: null. Condition: var:true
20(21) element: PyStatementList
21(22) element: PyPassStatement
22() element: null

View File

@@ -7,24 +7,25 @@
6(7) READ ACCESS: isinstance
7(8) READ ACCESS: var
8(9) READ ACCESS: A
9(10,28) element: PyCallExpression: isinstance
10(11) element: PyStatementList. Condition: isinstance(var, A):true
11(12) ASSERTTYPE ACCESS: var
12(13) element: PyIfStatement
13(14) element: PyBinaryExpression
14(15) READ ACCESS: isinstance
15(16) READ ACCESS: var
16(17) READ ACCESS: B
17(18,19) element: PyCallExpression: isinstance
18(24) element: null. Condition: isinstance(var, B):true
19(20) element: null. Condition: isinstance(var, B):false
20(21) ASSERTTYPE ACCESS: var
21(22,23) READ ACCESS: var
22(27) element: null. Condition: var:false
23(24) element: null. Condition: var:true
24(25) element: PyStatementList. Condition: isinstance(var, B) or var:true
25(26) ASSERTTYPE ACCESS: var
26(29) element: PyPassStatement
27(29) ASSERTTYPE ACCESS: var
28(29) ASSERTTYPE ACCESS: var
29() element: null
9(10,12) element: PyCallExpression: isinstance
10(11) element: null. Condition: isinstance(var, A):false
11(30) ASSERTTYPE ACCESS: var
12(13) element: null. Condition: isinstance(var, A):true
13(14) ASSERTTYPE ACCESS: var
14(15) element: PyStatementList
15(16) element: PyIfStatement
16(17) element: PyBinaryExpression
17(18) READ ACCESS: isinstance
18(19) READ ACCESS: var
19(20) READ ACCESS: B
20(21,23) element: PyCallExpression: isinstance
21(22) element: null. Condition: isinstance(var, B):false
22(25) ASSERTTYPE ACCESS: var
23(24) element: null. Condition: isinstance(var, B):true
24(28) ASSERTTYPE ACCESS: var
25(26,27) READ ACCESS: var
26(30) element: null. Condition: var:false
27(28) element: null. Condition: var:true
28(29) element: PyStatementList
29(30) element: PyPassStatement
30() element: null

View File

@@ -1,46 +1,58 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,6) READ ACCESS: c1
3(4) element: PyStatementList. Condition: c1:true
4(5) element: PyAssignmentStatement
5(1) WRITE ACCESS: x
6(7) element: PyElsePart. Condition: c1:false
7(8) element: PyAssignmentStatement
8(9) WRITE ACCESS: y
9(10) element: PyWhileStatement
10(11,17) READ ACCESS: c2
11(12) element: PyStatementList. Condition: c2:true
12(13) element: PyAssignmentStatement
13(14) WRITE ACCESS: a
14(20) element: PyBreakStatement
15(16) element: PyAssignmentStatement
16(9) WRITE ACCESS: b
17(18) element: PyElsePart. Condition: c2:false
18(19) element: PyAssignmentStatement
19(20) WRITE ACCESS: c
20(21) element: PyWhileStatement
21(22,32) READ ACCESS: c3
22(23) element: PyStatementList. Condition: c3:true
23(24) element: PyAssignmentStatement
24(25) WRITE ACCESS: m
25(26) element: PyIfStatement
26(27,30) READ ACCESS: m
27(28) element: PyStatementList. Condition: m:true
28(29) ASSERTTYPE ACCESS: m
29(35) element: PyBreakStatement
30(31) element: PyAssignmentStatement
31(20) WRITE ACCESS: n
32(33) element: PyElsePart. Condition: c3:false
33(34) element: PyAssignmentStatement
34(35) WRITE ACCESS: o
35(36) element: PyWhileStatement
36(37,45) READ ACCESS: c4
37(38) element: PyStatementList. Condition: c4:true
2(3,4) READ ACCESS: c1
3(8) element: null. Condition: c1:false
4(5) element: null. Condition: c1:true
5(6) element: PyStatementList
6(7) element: PyAssignmentStatement
7(1) WRITE ACCESS: x
8(9) element: PyStatementList
9(10) element: PyAssignmentStatement
10(11) WRITE ACCESS: y
11(12) element: PyWhileStatement
12(13,14) READ ACCESS: c2
13(21) element: null. Condition: c2:false
14(15) element: null. Condition: c2:true
15(16) element: PyStatementList
16(17) element: PyAssignmentStatement
17(18) WRITE ACCESS: a
18(24) element: PyBreakStatement
19(20) element: PyAssignmentStatement
20(11) WRITE ACCESS: b
21(22) element: PyStatementList
22(23) element: PyAssignmentStatement
23(24) WRITE ACCESS: c
24(25) element: PyWhileStatement
25(26,27) READ ACCESS: c3
26(40) element: null. Condition: c3:false
27(28) element: null. Condition: c3:true
28(29) element: PyStatementList
29(30) element: PyAssignmentStatement
30(31) WRITE ACCESS: m
31(32) element: PyIfStatement
32(33,34) READ ACCESS: m
33(38) element: null. Condition: m:false
34(35) element: null. Condition: m:true
35(36) ASSERTTYPE ACCESS: m
36(37) element: PyStatementList
37(43) element: PyBreakStatement
38(39) element: PyAssignmentStatement
39(40) WRITE ACCESS: m
40(41) element: PyIfStatement
41(42,35) READ ACCESS: m
42(43) element: PyStatementList. Condition: m:true
43(44) ASSERTTYPE ACCESS: m
44(45) element: PyBreakStatement
45() element: null
39(24) WRITE ACCESS: n
40(41) element: PyStatementList
41(42) element: PyAssignmentStatement
42(43) WRITE ACCESS: o
43(44) element: PyWhileStatement
44(45,46) READ ACCESS: c4
45(57) element: null. Condition: c4:false
46(47) element: null. Condition: c4:true
47(48) element: PyStatementList
48(49) element: PyAssignmentStatement
49(50) WRITE ACCESS: m
50(51) element: PyIfStatement
51(52,53) READ ACCESS: m
52(43) element: null. Condition: m:false
53(54) element: null. Condition: m:true
54(55) ASSERTTYPE ACCESS: m
55(56) element: PyStatementList
56(57) element: PyBreakStatement
57() element: null

View File

@@ -1,8 +1,10 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3) READ ACCESS: True
3(4) element: PyStatementList. Condition: True:true
4(1) element: PyPassStatement
5(6) element: PyElsePart. Condition: True:false
6(7) element: PyPrintStatement
7() element: null
2(3,4) READ ACCESS: True
3() element: null. Condition: True:false
4(5) element: null. Condition: True:true
5(6) element: PyStatementList
6(1) element: PyPassStatement
7(8) element: PyStatementList
8(9) element: PyPrintStatement
9() element: null

View File

@@ -5,6 +5,9 @@
4(5) READ ACCESS: True
5(6) READ ACCESS: f
6(7) element: PyCallExpression: f
7(8) element: PyPrintStatement
8(9) element: PyPrintStatement
9() element: null
7(8,9) READ ACCESS: True
8(12) element: null. Condition: True:false
9(10) element: null. Condition: True:true
10(11) element: PyPrintStatement
11(12) element: PyPrintStatement
12() element: null

View File

@@ -2,14 +2,16 @@
1(2) element: PyWithStatement
2(3) READ ACCESS: context_manager
3(4) element: PyIfStatement
4(5,9) READ ACCESS: c
5(6) element: PyStatementList. Condition: c:true
6(7) ASSERTTYPE ACCESS: c
7(8) element: PyRaiseStatement
8(12,14) READ ACCESS: ValueError
9(10) element: PyAssignmentStatement
10(11) READ ACCESS: c
11(12) WRITE ACCESS: val
12(13) element: PyPrintStatement
13(14) READ ACCESS: val
14() element: null
4(5,6) READ ACCESS: c
5(11) element: null. Condition: c:false
6(7) element: null. Condition: c:true
7(8) ASSERTTYPE ACCESS: c
8(9) element: PyStatementList
9(10) element: PyRaiseStatement
10(14,16) READ ACCESS: ValueError
11(12) element: PyAssignmentStatement
12(13) READ ACCESS: c
13(14) WRITE ACCESS: val
14(15) element: PyPrintStatement
15(16) READ ACCESS: val
16() element: null