mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-17 07:20:53 +07:00
Add separate CFG instructions to if-statements to understand when and where a condition is succeeded/failed (PY-39262)
It allows to assume that under `and` condition all sub-conditions are satisfied. GitOrigin-RevId: 104bb5a2200791d183cc26e008b974a6b658fa37
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2b64d3b15d
commit
882c5348b3
@@ -2,6 +2,10 @@
|
||||
1(2) element: PyAssignmentStatement
|
||||
2(3) element: PyBinaryExpression
|
||||
3(4,5) READ ACCESS: bar
|
||||
4(5) READ ACCESS: baz
|
||||
5(6) WRITE ACCESS: foo
|
||||
6() element: null
|
||||
4(9) element: null. Condition: bar:false
|
||||
5(6) 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
|
||||
9(10) WRITE ACCESS: foo
|
||||
10() element: null
|
||||
@@ -1,6 +1,6 @@
|
||||
0(1) element: null
|
||||
1(2) element: PyForStatement
|
||||
2(3,16) READ ACCESS: self
|
||||
2(3,20) READ ACCESS: self
|
||||
3(4) element: PyTupleExpression
|
||||
4(5) WRITE ACCESS: start
|
||||
5(6) WRITE ACCESS: end
|
||||
@@ -8,10 +8,14 @@
|
||||
7(8) element: PyIfStatement
|
||||
8(9) element: PyBinaryExpression
|
||||
9(10) READ ACCESS: hour
|
||||
10(11,13,3,16) READ ACCESS: start
|
||||
11(12) READ ACCESS: hour
|
||||
12(13,3,16) READ ACCESS: end
|
||||
13(14) element: PyStatementList. Condition: hour >= start and hour < end:true
|
||||
14(15) element: PyReturnStatement
|
||||
15(16) READ ACCESS: name
|
||||
16() element: null
|
||||
10(11,12) READ ACCESS: start
|
||||
11(3,20) element: null. Condition: hour >= start:false
|
||||
12(13) element: null. Condition: hour >= start:true
|
||||
13(14) READ ACCESS: hour
|
||||
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
|
||||
18(19) element: PyReturnStatement
|
||||
19(20) READ ACCESS: name
|
||||
20() element: null
|
||||
@@ -23,21 +23,29 @@
|
||||
22(23) element: PyBinaryExpression
|
||||
23(24) element: PyBinaryExpression
|
||||
24(25,26) READ ACCESS: collapse
|
||||
25(26,27) element: PyLambdaExpression
|
||||
26(27) element: PyLambdaExpression
|
||||
27(28) WRITE ACCESS: processFunc
|
||||
28(29) element: PyPrintStatement
|
||||
29(30) element: PyListCompExpression
|
||||
30(31) element: PyReferenceExpression: methodList
|
||||
31(32,42) READ ACCESS: methodList
|
||||
32(33) element: PyTargetExpression: method
|
||||
33(34) WRITE ACCESS: method
|
||||
34(35) element: PyBinaryExpression
|
||||
35(36) READ ACCESS: method
|
||||
36(37) READ ACCESS: spacing
|
||||
37(38) READ ACCESS: processFunc
|
||||
38(39) READ ACCESS: str
|
||||
39(40) READ ACCESS: getattr
|
||||
40(41) READ ACCESS: object
|
||||
41(32,42) READ ACCESS: method
|
||||
42() element: null
|
||||
25(32) element: null. Condition: collapse:false
|
||||
26(27) element: null. Condition: collapse:true
|
||||
27(28,29) element: PyLambdaExpression
|
||||
28(32) element: null. Condition: (lambda s: " ".join(s.split())):false
|
||||
29(30,31) element: null. Condition: (lambda s: " ".join(s.split())):true
|
||||
30(35) element: null. Condition: collapse and (lambda s: " ".join(s.split())):true
|
||||
31(32) element: null. Condition: collapse and (lambda s: " ".join(s.split())):false
|
||||
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,50) 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) READ ACCESS: processFunc
|
||||
46(47) READ ACCESS: str
|
||||
47(48) READ ACCESS: getattr
|
||||
48(49) READ ACCESS: object
|
||||
49(40,50) READ ACCESS: method
|
||||
50() element: null
|
||||
@@ -2,6 +2,10 @@
|
||||
1(2) element: PyAssignmentStatement
|
||||
2(3) element: PyBinaryExpression
|
||||
3(4,5) READ ACCESS: bar
|
||||
4(5) READ ACCESS: baz
|
||||
5(6) WRITE ACCESS: foo
|
||||
6() element: null
|
||||
4(9) element: null. Condition: bar:true
|
||||
5(6) element: null. Condition: bar:false
|
||||
6(7,8) READ ACCESS: baz
|
||||
7(9) element: null. Condition: baz:false
|
||||
8(9) element: null. Condition: baz:true
|
||||
9(10) WRITE ACCESS: foo
|
||||
10() element: null
|
||||
@@ -8,10 +8,14 @@
|
||||
7(8) element: PyBinaryExpression
|
||||
8(9) READ ACCESS: isinstance
|
||||
9(10) READ ACCESS: var
|
||||
10(11,13,15) READ ACCESS: A
|
||||
11(12) ASSERTTYPE ACCESS: var
|
||||
12(13,15) READ ACCESS: var
|
||||
13(14) element: PyStatementList. Condition: isinstance(var, A) and var:true
|
||||
14(16) ASSERTTYPE ACCESS: var
|
||||
15(16) ASSERTTYPE ACCESS: var
|
||||
16() element: null
|
||||
10(11,12) READ ACCESS: A
|
||||
11(19) element: null. Condition: isinstance(var, A):false
|
||||
12(13) element: null. Condition: isinstance(var, A):true
|
||||
13(14) ASSERTTYPE ACCESS: var
|
||||
14(15,16) READ ACCESS: var
|
||||
15(19) element: null. Condition: var:false
|
||||
16(17) element: null. Condition: var:true
|
||||
17(18) element: PyStatementList. Condition: isinstance(var, A) and var:true
|
||||
18(20) ASSERTTYPE ACCESS: var
|
||||
19(20) ASSERTTYPE ACCESS: var
|
||||
20() element: null
|
||||
@@ -6,18 +6,22 @@
|
||||
5(6) element: PyIfStatement
|
||||
6(7) READ ACCESS: isinstance
|
||||
7(8) READ ACCESS: var
|
||||
8(9,21) READ ACCESS: A
|
||||
8(9,25) READ ACCESS: A
|
||||
9(10) element: PyStatementList. Condition: isinstance(var, A):true
|
||||
10(11) ASSERTTYPE ACCESS: var
|
||||
11(12) element: PyIfStatement
|
||||
12(13) element: PyBinaryExpression
|
||||
13(14) READ ACCESS: isinstance
|
||||
14(15) READ ACCESS: var
|
||||
15(16,18,20) READ ACCESS: B
|
||||
16(17) ASSERTTYPE ACCESS: var
|
||||
17(18,20) READ ACCESS: var
|
||||
18(19) element: PyStatementList. Condition: isinstance(var, B) or var:true
|
||||
19(22) ASSERTTYPE ACCESS: var
|
||||
20(22) ASSERTTYPE ACCESS: var
|
||||
21(22) ASSERTTYPE ACCESS: var
|
||||
22() element: null
|
||||
15(16,17) READ ACCESS: B
|
||||
16(22) element: null. Condition: isinstance(var, B):true
|
||||
17(18) element: null. Condition: isinstance(var, B):false
|
||||
18(19) ASSERTTYPE ACCESS: var
|
||||
19(20,21) READ ACCESS: var
|
||||
20(24) element: null. Condition: var:false
|
||||
21(22) element: null. Condition: var:true
|
||||
22(23) element: PyStatementList. Condition: isinstance(var, B) or var:true
|
||||
23(26) ASSERTTYPE ACCESS: var
|
||||
24(26) ASSERTTYPE ACCESS: var
|
||||
25(26) ASSERTTYPE ACCESS: var
|
||||
26() element: null
|
||||
Reference in New Issue
Block a user