[pycharm] move type guards from control flow to PyDefUse stage

GitOrigin-RevId: e66971e619978ad179bb49a15820a7482b27df7c
This commit is contained in:
Vladimir Koshelev
2024-07-15 17:15:11 +02:00
committed by intellij-monorepo-bot
parent 25b01bf1db
commit 82e8947e95
11 changed files with 211 additions and 133 deletions

View File

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

View File

@@ -23,13 +23,12 @@
22(23) element: PyBinaryExpression
23(24) READ ACCESS: checkit
24(25) READ ACCESS: foo
25(26,28) element: PyCallExpression: checkit
26(33) element: null. Condition: checkit(foo):false
28(27) ASSERTTYPE ACCESS: foo
27(29) element: null. Condition: checkit(foo):true
29(30) element: PySubscriptionExpression
30(31,32) READ ACCESS: foo
31(33) element: null. Condition: foo[123]:false
32(33) element: null. Condition: foo[123]:true
33(34) WRITE ACCESS: y
34() element: null
25(26,27) element: PyCallExpression: checkit
26(32) element: null. Condition: checkit(foo):false
27(28) element: null. Condition: checkit(foo):true
28(29) element: PySubscriptionExpression
29(30,31) READ ACCESS: foo
30(32) element: null. Condition: foo[123]:false
31(32) element: null. Condition: foo[123]:true
32(33) WRITE ACCESS: y
33() element: null

View File

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