PY-81676 Don't report lines with assert_never as unreachable

(cherry picked from commit afdbf35915823de02a6b8551f57770113d0feb2f)

IJ-CR-172556

GitOrigin-RevId: 0f8526e2877736ac606db9ed4657a530a66d6f23
This commit is contained in:
Aleksandr.Govenko
2025-06-13 20:56:01 +02:00
committed by intellij-monorepo-bot
parent 5a60b17b4d
commit adcc559e5c
47 changed files with 652 additions and 477 deletions

View File

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

View File

@@ -18,14 +18,15 @@
17(18) element: null. Condition: d:true
18(19) ASSERTTYPE ACCESS: d
19(20) element: PyStatementList
20(30) element: PyPassStatement
20(31) element: PyPassStatement
21(22,23) READ ACCESS: True
22() element: null. Condition: True:false
22(27) 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
26(31) element: PyPassStatement
27(28) ASSERTTYPE ACCESS: null
28(29) element: PyStatementList
29(30) element: PyAssignmentStatement
30(31) WRITE ACCESS: e
31() element: null

View File

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

View File

@@ -1,21 +1,22 @@
0(1) element: null
1(2) element: PyIfStatement
2(3,4) READ ACCESS: True
3() element: null. Condition: True:false
3(13) element: null. Condition: True:false
4(5) element: null. Condition: True:true
5(6) ASSERTTYPE ACCESS: True
6(7) element: PyStatementList
7(8) element: PyForStatement
8(9) READ ACCESS: range
9(10,18) element: PyCallExpression: range
9(10,19) element: PyCallExpression: range
10(11) element: PyTargetExpression: _
11(12) WRITE ACCESS: _
12(10,18) element: PyPrintStatement
13(14) element: PyStatementList
14(15) element: PyRaiseStatement
15(16) READ ACCESS: Exception
16(17) element: PyCallExpression: Exception
17(20) raise: PyRaiseStatement
18(19) element: PyReturnStatement
19(20) READ ACCESS: True
20() element: null
12(10,19) element: PyPrintStatement
13(14) ASSERTTYPE ACCESS: null
14(15) element: PyStatementList
15(16) element: PyRaiseStatement
16(17) READ ACCESS: Exception
17(18) element: PyCallExpression: Exception
18(21) raise: PyRaiseStatement
19(20) element: PyReturnStatement
20(21) READ ACCESS: True
21() element: null

View File

@@ -8,29 +8,32 @@
7(8) element: PyPassStatement
8(9) element: PyIfStatement
9(10,11) READ ACCESS: True
10() element: null. Condition: True:false
10(15) 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
14(19) element: PyPassStatement
15(16) ASSERTTYPE ACCESS: null
16(17) element: PyStatementList
17(18) element: PyAssignmentStatement
18(19) WRITE ACCESS: b
19(20) element: PyIfStatement
20(21,22) READ ACCESS: True
21(26) element: null. Condition: True:false
22(23) element: null. Condition: True:true
23(24) ASSERTTYPE ACCESS: True
24(25) element: PyStatementList
25(38) element: PyPassStatement
26(27,28) READ ACCESS: c
27(34) element: null. Condition: c:false
28(29) element: null. Condition: c:true
29(30) ASSERTTYPE ACCESS: c
30(31) ASSERTTYPE ACCESS: null
31(32) element: PyStatementList
32(33) element: PyAssignmentStatement
33(38) WRITE ACCESS: d
34(35) ASSERTTYPE ACCESS: null
35(36) element: PyStatementList
36(37) element: PyAssignmentStatement
37(38) WRITE ACCESS: e
38() element: null

View File

@@ -1,18 +1,19 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,4) READ ACCESS: x
3(15) element: null. Condition: x:false
3(16) 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,12) refutable pattern: 42
9(10) ASSERTTYPE ACCESS: x
10(11) matched pattern: 42
11(15) element: PyBreakStatement
12(13) ASSERTTYPE ACCESS: x
13(14) element: PyExpressionStatement
14(1) READ ACCESS: y
15(16) element: PyExpressionStatement
16(17) READ ACCESS: z
17() element: null
8(9,13) refutable pattern: 42
9(10) matched pattern: 42
10(11) ASSERTTYPE ACCESS: x
11(12) element: PyStatementList
12(16) element: PyBreakStatement
13(14) ASSERTTYPE ACCESS: x
14(15) element: PyExpressionStatement
15(1) READ ACCESS: y
16(17) element: PyExpressionStatement
17(18) READ ACCESS: z
18() element: null

View File

@@ -1,18 +1,19 @@
0(1) element: null
1(2) element: PyWhileStatement
2(3,4) READ ACCESS: x
3(15) element: null. Condition: x:false
3(16) 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,12) refutable pattern: 42
9(10) ASSERTTYPE ACCESS: x
10(11) matched pattern: 42
11(1) element: PyContinueStatement
12(13) ASSERTTYPE ACCESS: x
13(14) element: PyExpressionStatement
14(1) READ ACCESS: y
15(16) element: PyExpressionStatement
16(17) READ ACCESS: z
17() element: null
8(9,13) refutable pattern: 42
9(10) matched pattern: 42
10(11) ASSERTTYPE ACCESS: x
11(12) element: PyStatementList
12(1) element: PyContinueStatement
13(14) ASSERTTYPE ACCESS: x
14(15) element: PyExpressionStatement
15(1) READ ACCESS: y
16(17) element: PyExpressionStatement
17(18) READ ACCESS: z
18() element: null

View File

@@ -2,11 +2,12 @@
1(2) WRITE ACCESS: x
2(3) element: PyMatchStatement
3(4) READ ACCESS: x
4(5,8) refutable pattern: 42
5(6) ASSERTTYPE ACCESS: x
6(7) matched pattern: 42
7(11) element: PyReturnStatement
8(9) ASSERTTYPE ACCESS: x
9(10) element: PyExpressionStatement
10(11) READ ACCESS: y
11() element: null
4(5,9) refutable pattern: 42
5(6) matched pattern: 42
6(7) ASSERTTYPE ACCESS: x
7(8) element: PyStatementList
8(12) element: PyReturnStatement
9(10) ASSERTTYPE ACCESS: x
10(11) element: PyExpressionStatement
11(12) READ ACCESS: y
12() element: null

View File

@@ -1,20 +1,23 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,12) refutable pattern: 1
2(3,14) refutable pattern: 1
3(4) matched pattern: 1
4(5) element: PyMatchStatement
5(6,9) refutable pattern: 11
6(7) matched pattern: 11
7(8) element: PyExpressionStatement
8(10) READ ACCESS: y11
9(10) ASSERTTYPE ACCESS: null
10(11) element: PyExpressionStatement
11(17) READ ACCESS: y1
12(13,16) refutable pattern: 2
13(14) matched pattern: 2
14(15) element: PyExpressionStatement
15(17) READ ACCESS: y2
16(17) ASSERTTYPE ACCESS: null
4(5) element: PyStatementList
5(6) element: PyMatchStatement
6(7,11) refutable pattern: 11
7(8) matched pattern: 11
8(9) element: PyStatementList
9(10) element: PyExpressionStatement
10(12) READ ACCESS: y11
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(20) READ ACCESS: y1
14(15,19) refutable pattern: 2
15(16) matched pattern: 2
16(17) element: PyStatementList
17(18) element: PyExpressionStatement
18(19) READ ACCESS: z
19() element: null
18(20) READ ACCESS: y2
19(20) ASSERTTYPE ACCESS: null
20(21) element: PyExpressionStatement
21(22) READ ACCESS: z
22() element: null

View File

@@ -1,18 +1,21 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,10) refutable pattern: 1
2(3,12) refutable pattern: 1
3(4) matched pattern: 1
4(5) element: PyMatchStatement
5(6,9) refutable pattern: 11
6(7) matched pattern: 11
7(8) element: PyExpressionStatement
8(15) READ ACCESS: y11
9(15) ASSERTTYPE ACCESS: null
10(11,14) refutable pattern: 2
11(12) matched pattern: 2
12(13) element: PyExpressionStatement
13(15) READ ACCESS: y2
14(15) ASSERTTYPE ACCESS: null
4(5) element: PyStatementList
5(6) element: PyMatchStatement
6(7,11) refutable pattern: 11
7(8) matched pattern: 11
8(9) element: PyStatementList
9(10) element: PyExpressionStatement
10(18) READ ACCESS: y11
11(18) ASSERTTYPE ACCESS: null
12(13,17) refutable pattern: 2
13(14) matched pattern: 2
14(15) element: PyStatementList
15(16) element: PyExpressionStatement
16(17) READ ACCESS: z
17() element: null
16(18) READ ACCESS: y2
17(18) ASSERTTYPE ACCESS: null
18(19) element: PyExpressionStatement
19(20) READ ACCESS: z
20() element: null

View File

@@ -7,13 +7,14 @@
6(7) matched pattern: 42
7(11) matched pattern: [42]
8(9) refutable pattern: foo.bar
9(10,15) READ ACCESS: foo
9(10,16) READ ACCESS: foo
10(11) matched pattern: foo.bar
11(12) matched pattern: [42] | foo.bar
12(13) WRITE ACCESS: x
13(14) element: PyExpressionStatement
14(16) READ ACCESS: y
15(16) ASSERTTYPE ACCESS: null
16(17) element: PyExpressionStatement
17(18) READ ACCESS: z
18() element: null
13(14) element: PyStatementList
14(15) element: PyExpressionStatement
15(17) READ ACCESS: y
16(17) ASSERTTYPE ACCESS: null
17(18) element: PyExpressionStatement
18(19) READ ACCESS: z
19() element: null

View File

@@ -1,11 +1,12 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,7) refutable pattern: [x]
3(4) WRITE ACCESS: x
2(3,8) refutable pattern: [x]
3(4,8) WRITE ACCESS: x
4(5) matched pattern: [x]
5(6) element: PyExpressionStatement
6(8) READ ACCESS: y
7(8) ASSERTTYPE ACCESS: null
8(9) element: PyExpressionStatement
9(10) READ ACCESS: z
10() element: null
5(6) element: PyStatementList
6(7) element: PyExpressionStatement
7(9) READ ACCESS: y
8(9) ASSERTTYPE ACCESS: null
9(10) element: PyExpressionStatement
10(11) READ ACCESS: z
11() element: null

View File

@@ -1,8 +1,10 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) WRITE ACCESS: x
3(4) element: PyExpressionStatement
4(5) READ ACCESS: y
5(6) element: PyExpressionStatement
6(7) READ ACCESS: z
7() element: null
2(3,6) WRITE ACCESS: x
3(4) element: PyStatementList
4(5) element: PyExpressionStatement
5(7) READ ACCESS: y
6(7) ASSERTTYPE ACCESS: null
7(8) element: PyExpressionStatement
8(9) READ ACCESS: z
9() element: null

View File

@@ -1,18 +1,19 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) refutable pattern: Class(1, attr=foo.bar)
3(4,14) READ ACCESS: Class
4(5,14) refutable pattern: 1
3(4,15) READ ACCESS: Class
4(5,15) refutable pattern: 1
5(6) matched pattern: 1
6(7,14) refutable pattern: attr=foo.bar
6(7,15) refutable pattern: attr=foo.bar
7(8) refutable pattern: foo.bar
8(9,14) READ ACCESS: foo
8(9,15) READ ACCESS: foo
9(10) matched pattern: foo.bar
10(11) matched pattern: attr=foo.bar
11(12) matched pattern: Class(1, attr=foo.bar)
12(13) element: PyExpressionStatement
13(15) READ ACCESS: x
14(15) ASSERTTYPE ACCESS: null
15(16) element: PyExpressionStatement
16(17) READ ACCESS: y
17() element: null
12(13) element: PyStatementList
13(14) element: PyExpressionStatement
14(16) READ ACCESS: x
15(16) ASSERTTYPE ACCESS: null
16(17) element: PyExpressionStatement
17(18) READ ACCESS: y
18() element: null

View File

@@ -1,16 +1,17 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) WRITE ACCESS: x
2(3,13) WRITE ACCESS: x
3(4) element: PyBinaryExpression
4(5,6) READ ACCESS: x
5(12) element: null. Condition: x > 0:false
5(13) element: null. Condition: x > 0:false
6(7) element: null. Condition: x > 0:true
7(8,9) READ ACCESS: x
8(12) element: null. Condition: x < 10:false
8(13) element: null. Condition: x < 10:false
9(10) element: null. Condition: x < 10:true
10(11) element: PyExpressionStatement
11(13) READ ACCESS: y
12(13) ASSERTTYPE ACCESS: null
13(14) element: PyExpressionStatement
14(15) READ ACCESS: z
15() element: null
10(11) element: PyStatementList
11(12) element: PyExpressionStatement
12(14) READ ACCESS: y
13(14) ASSERTTYPE ACCESS: null
14(15) element: PyExpressionStatement
15(16) READ ACCESS: z
16() element: null

View File

@@ -1,20 +1,21 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) WRITE ACCESS: x
2(3,17) WRITE ACCESS: x
3(4) element: PyBinaryExpression
4(5,6) READ ACCESS: x
5(16) element: null. Condition: x % 4 == 0:false
5(17) 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(11) element: null. Condition: x % 400 == 0:false
10(14) element: null. Condition: x % 400 == 0:true
11(12,13) READ ACCESS: x
12(16) element: null. Condition: x % 100 != 0:false
12(17) element: null. Condition: x % 100 != 0:false
13(14) element: null. Condition: x % 100 != 0:true
14(15) element: PyExpressionStatement
15(17) READ ACCESS: y
16(17) ASSERTTYPE ACCESS: null
17(18) element: PyExpressionStatement
18(19) READ ACCESS: z
19() element: null
14(15) element: PyStatementList
15(16) element: PyExpressionStatement
16(18) READ ACCESS: y
17(18) ASSERTTYPE ACCESS: null
18(19) element: PyExpressionStatement
19(20) READ ACCESS: z
20() element: null

View File

@@ -1,16 +1,17 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) WRITE ACCESS: x
2(3,13) WRITE ACCESS: x
3(4) element: PyBinaryExpression
4(5,6) READ ACCESS: x
5(7) element: null. Condition: x > 0:false
6(10) element: null. Condition: x > 0:true
7(8,9) READ ACCESS: x
8(12) element: null. Condition: x < 0:false
8(13) element: null. Condition: x < 0:false
9(10) element: null. Condition: x < 0:true
10(11) element: PyExpressionStatement
11(13) READ ACCESS: y
12(13) ASSERTTYPE ACCESS: null
13(14) element: PyExpressionStatement
14(15) READ ACCESS: z
15() element: null
10(11) element: PyStatementList
11(12) element: PyExpressionStatement
12(14) READ ACCESS: y
13(14) ASSERTTYPE ACCESS: null
14(15) element: PyExpressionStatement
15(16) READ ACCESS: z
16() element: null

View File

@@ -1,17 +1,19 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,13) refutable pattern: {"foo": 1, **x}
3(4,13) refutable pattern: "foo": 1
4(5,13) refutable pattern: "foo"
2(3,15) refutable pattern: {"foo": 1, **x}
3(4,15) refutable pattern: "foo": 1
4(5,15) refutable pattern: "foo"
5(6) matched pattern: "foo"
6(7,13) refutable pattern: 1
6(7,15) refutable pattern: 1
7(8) matched pattern: 1
8(9) matched pattern: "foo": 1
9(10) WRITE ACCESS: x
10(11) matched pattern: {"foo": 1, **x}
11(12) element: PyExpressionStatement
12(14) READ ACCESS: y
13(14) ASSERTTYPE ACCESS: null
14(15) element: PyExpressionStatement
15(16) READ ACCESS: z
16() element: null
9(10,15) element: PyDoubleStarPattern
10(11,15) WRITE ACCESS: x
11(12) matched pattern: {"foo": 1, **x}
12(13) element: PyStatementList
13(14) element: PyExpressionStatement
14(16) READ ACCESS: y
15(16) ASSERTTYPE ACCESS: null
16(17) element: PyExpressionStatement
17(18) READ ACCESS: z
18() element: null

View File

@@ -1,23 +1,24 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,19) refutable pattern: [x1, x2, x3]
3(4) WRITE ACCESS: x1
4(5) WRITE ACCESS: x2
5(6) WRITE ACCESS: x3
2(3,20) refutable pattern: [x1, x2, x3]
3(4,20) WRITE ACCESS: x1
4(5,20) WRITE ACCESS: x2
5(6,20) WRITE ACCESS: x3
6(7) matched pattern: [x1, x2, x3]
7(8) element: PyBinaryExpression
8(9,10) READ ACCESS: x1
9(11) element: null. Condition: x1:false
10(17) element: null. Condition: x1:true
11(12,13,14) READ ACCESS: x2
12(19) element: null. Condition: x2:false
12(20) element: null. Condition: x2:false
13(17) element: null. Condition: x2:true
14(15,16) READ ACCESS: x3
15(19) element: null. Condition: (x1 or x2) > x3:false
15(20) element: null. Condition: (x1 or x2) > x3:false
16(17) element: null. Condition: (x1 or x2) > x3:true
17(18) element: PyExpressionStatement
18(20) READ ACCESS: y
19(20) ASSERTTYPE ACCESS: null
20(21) element: PyExpressionStatement
21(22) READ ACCESS: z
22() element: null
17(18) element: PyStatementList
18(19) element: PyExpressionStatement
19(21) READ ACCESS: y
20(21) ASSERTTYPE ACCESS: null
21(22) element: PyExpressionStatement
22(23) READ ACCESS: z
23() element: null

View File

@@ -1,14 +1,15 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) refutable pattern: x | [x]
3(7) WRITE ACCESS: x
4(5,10) refutable pattern: [x]
5(6) WRITE ACCESS: x
3(4,7) WRITE ACCESS: x
4(5,11) refutable pattern: [x]
5(6,11) WRITE ACCESS: x
6(7) matched pattern: [x]
7(8) matched pattern: x | [x]
8(9) element: PyExpressionStatement
9(11) READ ACCESS: y
10(11) ASSERTTYPE ACCESS: null
11(12) element: PyExpressionStatement
12(13) READ ACCESS: z
13() element: null
8(9) element: PyStatementList
9(10) element: PyExpressionStatement
10(12) READ ACCESS: y
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(14) READ ACCESS: z
14() element: null

View File

@@ -2,12 +2,14 @@
1(2) element: PyMatchStatement
2(3) refutable pattern: [x] | x
3(4,6) refutable pattern: [x]
4(5) WRITE ACCESS: x
4(5,6) WRITE ACCESS: x
5(7) matched pattern: [x]
6(7) WRITE ACCESS: x
6(7,11) WRITE ACCESS: x
7(8) matched pattern: [x] | x
8(9) element: PyExpressionStatement
9(10) READ ACCESS: y
10(11) element: PyExpressionStatement
11(12) READ ACCESS: z
12() element: null
8(9) element: PyStatementList
9(10) element: PyExpressionStatement
10(12) READ ACCESS: y
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(14) READ ACCESS: z
14() element: null

View File

@@ -1,10 +1,11 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,6) refutable pattern: 42
2(3,7) refutable pattern: 42
3(4) matched pattern: 42
4(5) element: PyExpressionStatement
5(7) READ ACCESS: y
6(7) ASSERTTYPE ACCESS: null
7(8) element: PyExpressionStatement
8(9) READ ACCESS: z
9() element: null
4(5) element: PyStatementList
5(6) element: PyExpressionStatement
6(8) READ ACCESS: y
7(8) ASSERTTYPE ACCESS: null
8(9) element: PyExpressionStatement
9(10) READ ACCESS: z
10() element: null

View File

@@ -1,23 +1,24 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,19) refutable pattern: {'foo': 1, 'bar': foo.bar}
3(4,19) refutable pattern: 'foo': 1
4(5,19) refutable pattern: 'foo'
2(3,20) refutable pattern: {'foo': 1, 'bar': foo.bar}
3(4,20) refutable pattern: 'foo': 1
4(5,20) refutable pattern: 'foo'
5(6) matched pattern: 'foo'
6(7,19) refutable pattern: 1
6(7,20) refutable pattern: 1
7(8) matched pattern: 1
8(9) matched pattern: 'foo': 1
9(10,19) refutable pattern: 'bar': foo.bar
10(11,19) refutable pattern: 'bar'
9(10,20) refutable pattern: 'bar': foo.bar
10(11,20) refutable pattern: 'bar'
11(12) matched pattern: 'bar'
12(13) refutable pattern: foo.bar
13(14,19) READ ACCESS: foo
13(14,20) READ ACCESS: foo
14(15) matched pattern: foo.bar
15(16) matched pattern: 'bar': foo.bar
16(17) matched pattern: {'foo': 1, 'bar': foo.bar}
17(18) element: PyExpressionStatement
18(20) READ ACCESS: x
19(20) ASSERTTYPE ACCESS: null
20(21) element: PyExpressionStatement
21(22) READ ACCESS: y
22() element: null
17(18) element: PyStatementList
18(19) element: PyExpressionStatement
19(21) READ ACCESS: x
20(21) ASSERTTYPE ACCESS: null
21(22) element: PyExpressionStatement
22(23) READ ACCESS: y
23() element: null

View File

@@ -1,13 +1,15 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,9) refutable pattern: [1, *x]
3(4,9) refutable pattern: 1
2(3,11) refutable pattern: [1, *x]
3(4,11) refutable pattern: 1
4(5) matched pattern: 1
5(6) WRITE ACCESS: x
6(7) matched pattern: [1, *x]
7(8) element: PyExpressionStatement
8(10) READ ACCESS: y
9(10) ASSERTTYPE ACCESS: null
10(11) element: PyExpressionStatement
11(12) READ ACCESS: z
12() element: null
5(6,11) element: PySingleStarPattern
6(7,11) WRITE ACCESS: x
7(8) matched pattern: [1, *x]
8(9) element: PyStatementList
9(10) element: PyExpressionStatement
10(12) READ ACCESS: y
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(14) READ ACCESS: z
14() element: null

View File

@@ -6,13 +6,14 @@
5(6) refutable pattern: 2 | 3
6(7,8) refutable pattern: 2
7(10) matched pattern: 2
8(9,14) refutable pattern: 3
8(9,15) refutable pattern: 3
9(10) matched pattern: 3
10(11) matched pattern: 2 | 3
11(12) matched pattern: 1 | (2 | 3)
12(13) element: PyExpressionStatement
13(15) READ ACCESS: x
14(15) ASSERTTYPE ACCESS: null
15(16) element: PyExpressionStatement
16(17) READ ACCESS: y
17() element: null
12(13) element: PyStatementList
13(14) element: PyExpressionStatement
14(16) READ ACCESS: x
15(16) ASSERTTYPE ACCESS: null
16(17) element: PyExpressionStatement
17(18) READ ACCESS: y
18() element: null

View File

@@ -1,8 +1,10 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) WRITE ACCESS: x
3(4) element: PyExpressionStatement
4(5) READ ACCESS: y
5(6) element: PyExpressionStatement
6(7) READ ACCESS: z
7() element: null
2(3,6) WRITE ACCESS: x
3(4) element: PyStatementList
4(5) element: PyExpressionStatement
5(7) READ ACCESS: y
6(7) ASSERTTYPE ACCESS: null
7(8) element: PyExpressionStatement
8(9) READ ACCESS: z
9() element: null

View File

@@ -2,17 +2,18 @@
1(2) element: PyMatchStatement
2(3) refutable pattern: [x] | (foo.bar as x)
3(4,6) refutable pattern: [x]
4(5) WRITE ACCESS: x
4(5,6) WRITE ACCESS: x
5(11) matched pattern: [x]
6(7) element: PyAsPattern
7(8) refutable pattern: foo.bar
8(9,14) READ ACCESS: foo
8(9,15) READ ACCESS: foo
9(10) matched pattern: foo.bar
10(11) WRITE ACCESS: x
11(12) matched pattern: [x] | (foo.bar as x)
12(13) element: PyExpressionStatement
13(15) READ ACCESS: y
14(15) ASSERTTYPE ACCESS: null
15(16) element: PyExpressionStatement
16(17) READ ACCESS: z
17() element: null
12(13) element: PyStatementList
13(14) element: PyExpressionStatement
14(16) READ ACCESS: y
15(16) ASSERTTYPE ACCESS: null
16(17) element: PyExpressionStatement
17(18) READ ACCESS: z
18() element: null

View File

@@ -3,12 +3,13 @@
2(3) refutable pattern: [] | 42
3(4,5) refutable pattern: []
4(7) matched pattern: []
5(6,10) refutable pattern: 42
5(6,11) refutable pattern: 42
6(7) matched pattern: 42
7(8) matched pattern: [] | 42
8(9) element: PyExpressionStatement
9(11) READ ACCESS: y
10(11) ASSERTTYPE ACCESS: null
11(12) element: PyExpressionStatement
12(13) READ ACCESS: z
13() element: null
8(9) element: PyStatementList
9(10) element: PyExpressionStatement
10(12) READ ACCESS: y
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(14) READ ACCESS: z
14() element: null

View File

@@ -1,13 +1,14 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) refutable pattern: _ | 42
3(6) element: PyWildcardPattern
4(5,9) refutable pattern: 42
3(4,6) element: PyWildcardPattern
4(5,10) refutable pattern: 42
5(6) matched pattern: 42
6(7) matched pattern: _ | 42
7(8) element: PyExpressionStatement
8(10) READ ACCESS: y
9(10) ASSERTTYPE ACCESS: null
10(11) element: PyExpressionStatement
11(12) READ ACCESS: z
12() element: null
7(8) element: PyStatementList
8(9) element: PyExpressionStatement
9(11) READ ACCESS: y
10(11) ASSERTTYPE ACCESS: null
11(12) element: PyExpressionStatement
12(13) READ ACCESS: z
13() element: null

View File

@@ -1,18 +1,19 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,14) refutable pattern: [x]
3(4) WRITE ACCESS: x
2(3,15) refutable pattern: [x]
3(4,15) WRITE ACCESS: x
4(5) matched pattern: [x]
5(6) element: PyBinaryExpression
6(7,8) READ ACCESS: x
7(14) element: null. Condition: x > 0:false
7(15) element: null. Condition: x > 0:false
8(9) element: null. Condition: x > 0:true
9(10,11) READ ACCESS: x
10(14) element: null. Condition: x % 2 == 0:false
10(15) element: null. Condition: x % 2 == 0:false
11(12) element: null. Condition: x % 2 == 0:true
12(13) element: PyExpressionStatement
13(15) READ ACCESS: y
14(15) ASSERTTYPE ACCESS: null
15(16) element: PyExpressionStatement
16(17) READ ACCESS: z
17() element: null
12(13) element: PyStatementList
13(14) element: PyExpressionStatement
14(16) READ ACCESS: y
15(16) ASSERTTYPE ACCESS: null
16(17) element: PyExpressionStatement
17(18) READ ACCESS: z
18() element: null

View File

@@ -1,15 +1,16 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,11) refutable pattern: [1, foo.bar]
3(4,11) refutable pattern: 1
2(3,12) refutable pattern: [1, foo.bar]
3(4,12) refutable pattern: 1
4(5) matched pattern: 1
5(6) refutable pattern: foo.bar
6(7,11) READ ACCESS: foo
6(7,12) READ ACCESS: foo
7(8) matched pattern: foo.bar
8(9) matched pattern: [1, foo.bar]
9(10) element: PyExpressionStatement
10(12) READ ACCESS: x
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(14) READ ACCESS: y
14() element: null
9(10) element: PyStatementList
10(11) element: PyExpressionStatement
11(13) READ ACCESS: x
12(13) ASSERTTYPE ACCESS: null
13(14) element: PyExpressionStatement
14(15) READ ACCESS: y
15() element: null

View File

@@ -1,15 +1,16 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,11) refutable pattern: [1 | x]
2(3,12) refutable pattern: [1 | x]
3(4) refutable pattern: 1 | x
4(5,6) refutable pattern: 1
5(7) matched pattern: 1
6(7) WRITE ACCESS: x
6(7,12) WRITE ACCESS: x
7(8) matched pattern: 1 | x
8(9) matched pattern: [1 | x]
9(10) element: PyExpressionStatement
10(12) READ ACCESS: y
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(14) READ ACCESS: z
14() element: null
9(10) element: PyStatementList
10(11) element: PyExpressionStatement
11(13) READ ACCESS: y
12(13) ASSERTTYPE ACCESS: null
13(14) element: PyExpressionStatement
14(15) READ ACCESS: z
15() element: null

View File

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

View File

@@ -1,8 +1,10 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3) element: PyWildcardPattern
3(4) element: PyExpressionStatement
4(5) READ ACCESS: y
5(6) element: PyExpressionStatement
6(7) READ ACCESS: z
7() element: null
2(3,6) element: PyWildcardPattern
3(4) element: PyStatementList
4(5) element: PyExpressionStatement
5(7) READ ACCESS: y
6(7) ASSERTTYPE ACCESS: null
7(8) element: PyExpressionStatement
8(9) READ ACCESS: z
9() element: null

View File

@@ -1,13 +1,15 @@
0(1) element: null
1(2) element: PyMatchStatement
2(3,9) refutable pattern: [1, *_]
3(4,9) refutable pattern: 1
2(3,11) refutable pattern: [1, *_]
3(4,11) refutable pattern: 1
4(5) matched pattern: 1
5(6) element: PyWildcardPattern
6(7) matched pattern: [1, *_]
7(8) element: PyExpressionStatement
8(10) READ ACCESS: y
9(10) ASSERTTYPE ACCESS: null
10(11) element: PyExpressionStatement
11(12) READ ACCESS: z
12() element: null
5(6,11) element: PySingleStarPattern
6(7,11) element: PyWildcardPattern
7(8) matched pattern: [1, *_]
8(9) element: PyStatementList
9(10) element: PyExpressionStatement
10(12) READ ACCESS: y
11(12) ASSERTTYPE ACCESS: null
12(13) element: PyExpressionStatement
13(14) READ ACCESS: z
14() element: null

View File

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

View File

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

View File

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