mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
Reuse if-statements approach for while-statements to understand when and where condition is succeeded/failed (PY-39262)
It allows to assume that under `and` condition all sub-conditions are satisfied. GitOrigin-RevId: f58ed2706d7eb9c1595415cce57cb8020011b57a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
882c5348b3
commit
ea9c2c9415
@@ -0,0 +1,5 @@
|
||||
while undefined1 and (r := undefined2()):
|
||||
print(r)
|
||||
|
||||
while undefined3 or (r2 := undefined4()):
|
||||
print(r2)
|
||||
@@ -0,0 +1,26 @@
|
||||
0(1) element: null
|
||||
1(2) element: PyWhileStatement
|
||||
2(3) element: PyBinaryExpression
|
||||
3(4,5) READ ACCESS: undefined1
|
||||
4(13) element: null. Condition: undefined1:false
|
||||
5(6) element: null. Condition: undefined1:true
|
||||
6(7) READ ACCESS: undefined2
|
||||
7(8,9) WRITE ACCESS: r
|
||||
8(13) element: null. Condition: (r := undefined2()):false
|
||||
9(10) element: null. Condition: (r := undefined2()):true
|
||||
10(11) element: PyStatementList. Condition: undefined1 and (r := undefined2()):true
|
||||
11(12) element: PyPrintStatement
|
||||
12(1) READ ACCESS: r
|
||||
13(14) element: PyWhileStatement
|
||||
14(15) element: PyBinaryExpression
|
||||
15(16,17) READ ACCESS: undefined3
|
||||
16(22) element: null. Condition: undefined3:true
|
||||
17(18) element: null. Condition: undefined3:false
|
||||
18(19) READ ACCESS: undefined4
|
||||
19(20,21) WRITE ACCESS: r2
|
||||
20(25) element: null. Condition: (r2 := undefined4()):false
|
||||
21(22) element: null. Condition: (r2 := undefined4()):true
|
||||
22(23) element: PyStatementList. Condition: undefined3 or (r2 := undefined4()):true
|
||||
23(24) element: PyPrintStatement
|
||||
24(13) READ ACCESS: r2
|
||||
25() element: null
|
||||
@@ -0,0 +1,9 @@
|
||||
while undefined1 and (r := undefined2()):
|
||||
print(r)
|
||||
else:
|
||||
print("ok")
|
||||
|
||||
while undefined3 or (r2 := undefined4()):
|
||||
print(r2)
|
||||
else:
|
||||
print("ok")
|
||||
@@ -0,0 +1,30 @@
|
||||
0(1) element: null
|
||||
1(2) element: PyWhileStatement
|
||||
2(3) element: PyBinaryExpression
|
||||
3(4,5) READ ACCESS: undefined1
|
||||
4(13) element: null. Condition: undefined1:false
|
||||
5(6) element: null. Condition: undefined1:true
|
||||
6(7) READ ACCESS: undefined2
|
||||
7(8,9) WRITE ACCESS: r
|
||||
8(13) element: null. Condition: (r := undefined2()):false
|
||||
9(10) element: null. Condition: (r := undefined2()):true
|
||||
10(11) element: PyStatementList. Condition: undefined1 and (r := undefined2()):true
|
||||
11(12) element: PyPrintStatement
|
||||
12(1) READ ACCESS: r
|
||||
13(14) element: PyElsePart. Condition: undefined1 and (r := undefined2()):false
|
||||
14(15) element: PyPrintStatement
|
||||
15(16) element: PyWhileStatement
|
||||
16(17) element: PyBinaryExpression
|
||||
17(18,19) READ ACCESS: undefined3
|
||||
18(24) element: null. Condition: undefined3:true
|
||||
19(20) element: null. Condition: undefined3:false
|
||||
20(21) READ ACCESS: 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
|
||||
25(26) element: PyPrintStatement
|
||||
26(15) READ ACCESS: r2
|
||||
27(28) element: PyElsePart. Condition: undefined3 or (r2 := undefined4()):false
|
||||
28(29) element: PyPrintStatement
|
||||
29() element: null
|
||||
@@ -16,4 +16,9 @@ while c3:
|
||||
break
|
||||
n = 1
|
||||
else:
|
||||
o = 1
|
||||
o = 1
|
||||
|
||||
while c4:
|
||||
m = 1
|
||||
if m:
|
||||
break
|
||||
@@ -4,30 +4,43 @@
|
||||
3(4) element: PyStatementList. Condition: c1:true
|
||||
4(5) element: PyAssignmentStatement
|
||||
5(1) WRITE ACCESS: x
|
||||
6(7) element: PyAssignmentStatement
|
||||
7(8) WRITE ACCESS: y
|
||||
8(9) element: PyWhileStatement
|
||||
9(10,16) READ ACCESS: c2
|
||||
10(11) element: PyStatementList. Condition: c2:true
|
||||
11(12) element: PyAssignmentStatement
|
||||
12(13) WRITE ACCESS: a
|
||||
13(18) element: PyBreakStatement
|
||||
14(15) element: PyAssignmentStatement
|
||||
15(8) WRITE ACCESS: b
|
||||
16(17) element: PyAssignmentStatement
|
||||
17(18) WRITE ACCESS: c
|
||||
18(19) element: PyWhileStatement
|
||||
19(20,30) READ ACCESS: c3
|
||||
20(21) element: PyStatementList. Condition: c3:true
|
||||
21(22) element: PyAssignmentStatement
|
||||
22(23) WRITE ACCESS: m
|
||||
23(24) element: PyIfStatement
|
||||
24(25,28) READ ACCESS: m
|
||||
25(26) element: PyStatementList. Condition: m:true
|
||||
26(27) ASSERTTYPE ACCESS: m
|
||||
27(32) element: PyBreakStatement
|
||||
28(29) element: PyAssignmentStatement
|
||||
29(18) WRITE ACCESS: n
|
||||
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(32) WRITE ACCESS: o
|
||||
32() element: null
|
||||
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
|
||||
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
|
||||
@@ -2,5 +2,6 @@
|
||||
1(2) element: PyWhileStatement
|
||||
2(3) READ ACCESS: True
|
||||
3(1) element: PyStatementList. Condition: True:true
|
||||
4(5) element: PyPrintStatement
|
||||
5() element: null
|
||||
4(5) element: PyElsePart. Condition: True:false
|
||||
5(6) element: PyPrintStatement
|
||||
6() element: null
|
||||
Reference in New Issue
Block a user