Merge pull request #4414 from yoff/SharedDataflow_Conditionals

Approved by RasmusWL
This commit is contained in:
CodeQL CI
2020-10-06 05:46:24 -07:00
committed by GitHub
4 changed files with 378 additions and 365 deletions

View File

@@ -170,6 +170,9 @@ module EssaFlow {
nodeTo.(EssaNode).getVar() = p.getVariable() and
nodeFrom.(EssaNode).getVar() = p.getAnInput()
)
or
// If expressions
nodeFrom.asCfgNode() = nodeTo.asCfgNode().(IfExprNode).getAnOperand()
}
predicate useToNextUse(NameNode nodeFrom, NameNode nodeTo) {

View File

@@ -29,128 +29,132 @@ edges
| datamodel.py:155:14:155:25 | ControlFlowNode for Customized() [Attribute b] | datamodel.py:159:6:159:15 | ControlFlowNode for customized [Attribute b] |
| datamodel.py:159:6:159:15 | ControlFlowNode for customized [Attribute b] | datamodel.py:159:6:159:17 | ControlFlowNode for Attribute |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:36:21:36:26 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:50:9:50:14 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:84:10:84:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:91:10:91:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:101:10:101:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:106:22:106:27 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:111:10:111:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:49:9:49:14 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:81:10:81:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:87:10:87:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:97:10:97:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:102:22:102:27 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:107:10:107:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:119:10:119:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:124:10:124:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:129:10:129:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:134:22:134:27 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:139:10:139:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:152:15:152:20 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:157:15:157:20 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:184:23:184:28 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:189:25:189:30 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:200:34:200:39 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:344:11:344:16 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:348:11:348:16 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:352:16:352:21 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:375:28:375:33 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:457:12:457:17 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:462:28:462:33 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:504:9:504:14 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:129:22:129:27 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:134:10:134:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:146:15:146:20 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:151:15:151:20 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:177:23:177:28 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:182:25:182:30 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:193:34:193:39 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:330:11:330:16 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:334:11:334:16 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:338:16:338:21 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:361:28:361:33 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:414:10:414:15 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:422:34:422:39 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:446:12:446:17 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:453:28:453:33 | ControlFlowNode for SOURCE |
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:502:9:502:14 | ControlFlowNode for SOURCE |
| test.py:14:1:14:6 | GSSA Variable SOURCE | test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test |
| test.py:14:10:14:17 | ControlFlowNode for Str | test.py:14:1:14:6 | GSSA Variable SOURCE |
| test.py:36:10:36:26 | ControlFlowNode for Tuple [Tuple element at index 1] | test.py:37:9:37:9 | ControlFlowNode for x [Tuple element at index 1] |
| test.py:36:21:36:26 | ControlFlowNode for SOURCE | test.py:36:10:36:26 | ControlFlowNode for Tuple [Tuple element at index 1] |
| test.py:37:9:37:9 | ControlFlowNode for x [Tuple element at index 1] | test.py:37:9:37:12 | ControlFlowNode for Subscript |
| test.py:37:9:37:12 | ControlFlowNode for Subscript | test.py:38:10:38:10 | ControlFlowNode for y |
| test.py:50:9:50:14 | ControlFlowNode for SOURCE | test.py:51:10:51:10 | ControlFlowNode for x |
| test.py:57:9:57:16 | ControlFlowNode for Str | test.py:58:10:58:10 | ControlFlowNode for x |
| test.py:62:9:62:17 | ControlFlowNode for Str | test.py:63:10:63:10 | ControlFlowNode for x |
| test.py:67:9:67:10 | ControlFlowNode for IntegerLiteral | test.py:68:10:68:10 | ControlFlowNode for x |
| test.py:72:9:72:12 | ControlFlowNode for FloatLiteral | test.py:73:10:73:10 | ControlFlowNode for x |
| test.py:84:10:84:15 | ControlFlowNode for SOURCE | test.py:85:10:85:10 | ControlFlowNode for x |
| test.py:91:9:91:16 | ControlFlowNode for List [List element] | test.py:92:10:92:10 | ControlFlowNode for x [List element] |
| test.py:91:10:91:15 | ControlFlowNode for SOURCE | test.py:91:9:91:16 | ControlFlowNode for List [List element] |
| test.py:92:10:92:10 | ControlFlowNode for x [List element] | test.py:92:10:92:13 | ControlFlowNode for Subscript |
| test.py:101:9:101:37 | ControlFlowNode for ListComp [List element] | test.py:102:10:102:10 | ControlFlowNode for x [List element] |
| test.py:101:10:101:15 | ControlFlowNode for SOURCE | test.py:101:9:101:37 | ControlFlowNode for ListComp [List element] |
| test.py:102:10:102:10 | ControlFlowNode for x [List element] | test.py:102:10:102:13 | ControlFlowNode for Subscript |
| test.py:106:9:106:29 | ControlFlowNode for ListComp [List element] | test.py:107:10:107:10 | ControlFlowNode for x [List element] |
| test.py:106:10:106:10 | ControlFlowNode for y | test.py:106:9:106:29 | ControlFlowNode for ListComp [List element] |
| test.py:106:16:106:16 | SSA variable y | test.py:106:10:106:10 | ControlFlowNode for y |
| test.py:106:21:106:28 | ControlFlowNode for List [List element] | test.py:106:16:106:16 | SSA variable y |
| test.py:106:22:106:27 | ControlFlowNode for SOURCE | test.py:106:21:106:28 | ControlFlowNode for List [List element] |
| test.py:107:10:107:10 | ControlFlowNode for x [List element] | test.py:107:10:107:13 | ControlFlowNode for Subscript |
| test.py:111:9:111:16 | ControlFlowNode for List [List element] | test.py:112:21:112:21 | ControlFlowNode for l [List element] |
| test.py:111:10:111:15 | ControlFlowNode for SOURCE | test.py:111:9:111:16 | ControlFlowNode for List [List element] |
| test.py:112:9:112:22 | ControlFlowNode for ListComp [List element] | test.py:113:10:113:10 | ControlFlowNode for x [List element] |
| test.py:112:10:112:10 | ControlFlowNode for y | test.py:112:9:112:22 | ControlFlowNode for ListComp [List element] |
| test.py:112:16:112:16 | SSA variable y | test.py:112:10:112:10 | ControlFlowNode for y |
| test.py:112:21:112:21 | ControlFlowNode for l [List element] | test.py:112:16:112:16 | SSA variable y |
| test.py:113:10:113:10 | ControlFlowNode for x [List element] | test.py:113:10:113:13 | ControlFlowNode for Subscript |
| test.py:124:9:124:16 | ControlFlowNode for Set [List element] | test.py:125:10:125:10 | ControlFlowNode for x [List element] |
| test.py:124:10:124:15 | ControlFlowNode for SOURCE | test.py:124:9:124:16 | ControlFlowNode for Set [List element] |
| test.py:125:10:125:10 | ControlFlowNode for x [List element] | test.py:125:10:125:16 | ControlFlowNode for Attribute() |
| test.py:129:9:129:37 | ControlFlowNode for SetComp [Set element] | test.py:130:10:130:10 | ControlFlowNode for x [Set element] |
| test.py:129:10:129:15 | ControlFlowNode for SOURCE | test.py:129:9:129:37 | ControlFlowNode for SetComp [Set element] |
| test.py:49:9:49:14 | ControlFlowNode for SOURCE | test.py:50:10:50:10 | ControlFlowNode for x |
| test.py:55:9:55:16 | ControlFlowNode for Str | test.py:56:10:56:10 | ControlFlowNode for x |
| test.py:60:9:60:17 | ControlFlowNode for Str | test.py:61:10:61:10 | ControlFlowNode for x |
| test.py:65:9:65:10 | ControlFlowNode for IntegerLiteral | test.py:66:10:66:10 | ControlFlowNode for x |
| test.py:70:9:70:12 | ControlFlowNode for FloatLiteral | test.py:71:10:71:10 | ControlFlowNode for x |
| test.py:81:10:81:15 | ControlFlowNode for SOURCE | test.py:82:10:82:10 | ControlFlowNode for x |
| test.py:87:9:87:16 | ControlFlowNode for List [List element] | test.py:88:10:88:10 | ControlFlowNode for x [List element] |
| test.py:87:10:87:15 | ControlFlowNode for SOURCE | test.py:87:9:87:16 | ControlFlowNode for List [List element] |
| test.py:88:10:88:10 | ControlFlowNode for x [List element] | test.py:88:10:88:13 | ControlFlowNode for Subscript |
| test.py:97:9:97:37 | ControlFlowNode for ListComp [List element] | test.py:98:10:98:10 | ControlFlowNode for x [List element] |
| test.py:97:10:97:15 | ControlFlowNode for SOURCE | test.py:97:9:97:37 | ControlFlowNode for ListComp [List element] |
| test.py:98:10:98:10 | ControlFlowNode for x [List element] | test.py:98:10:98:13 | ControlFlowNode for Subscript |
| test.py:102:9:102:29 | ControlFlowNode for ListComp [List element] | test.py:103:10:103:10 | ControlFlowNode for x [List element] |
| test.py:102:10:102:10 | ControlFlowNode for y | test.py:102:9:102:29 | ControlFlowNode for ListComp [List element] |
| test.py:102:16:102:16 | SSA variable y | test.py:102:10:102:10 | ControlFlowNode for y |
| test.py:102:21:102:28 | ControlFlowNode for List [List element] | test.py:102:16:102:16 | SSA variable y |
| test.py:102:22:102:27 | ControlFlowNode for SOURCE | test.py:102:21:102:28 | ControlFlowNode for List [List element] |
| test.py:103:10:103:10 | ControlFlowNode for x [List element] | test.py:103:10:103:13 | ControlFlowNode for Subscript |
| test.py:107:9:107:16 | ControlFlowNode for List [List element] | test.py:108:21:108:21 | ControlFlowNode for l [List element] |
| test.py:107:10:107:15 | ControlFlowNode for SOURCE | test.py:107:9:107:16 | ControlFlowNode for List [List element] |
| test.py:108:9:108:22 | ControlFlowNode for ListComp [List element] | test.py:109:10:109:10 | ControlFlowNode for x [List element] |
| test.py:108:10:108:10 | ControlFlowNode for y | test.py:108:9:108:22 | ControlFlowNode for ListComp [List element] |
| test.py:108:16:108:16 | SSA variable y | test.py:108:10:108:10 | ControlFlowNode for y |
| test.py:108:21:108:21 | ControlFlowNode for l [List element] | test.py:108:16:108:16 | SSA variable y |
| test.py:109:10:109:10 | ControlFlowNode for x [List element] | test.py:109:10:109:13 | ControlFlowNode for Subscript |
| test.py:119:9:119:16 | ControlFlowNode for Set [List element] | test.py:120:10:120:10 | ControlFlowNode for x [List element] |
| test.py:119:10:119:15 | ControlFlowNode for SOURCE | test.py:119:9:119:16 | ControlFlowNode for Set [List element] |
| test.py:120:10:120:10 | ControlFlowNode for x [List element] | test.py:120:10:120:16 | ControlFlowNode for Attribute() |
| test.py:124:9:124:37 | ControlFlowNode for SetComp [Set element] | test.py:125:10:125:10 | ControlFlowNode for x [Set element] |
| test.py:124:10:124:15 | ControlFlowNode for SOURCE | test.py:124:9:124:37 | ControlFlowNode for SetComp [Set element] |
| test.py:125:10:125:10 | ControlFlowNode for x [Set element] | test.py:125:10:125:16 | ControlFlowNode for Attribute() |
| test.py:129:9:129:29 | ControlFlowNode for SetComp [Set element] | test.py:130:10:130:10 | ControlFlowNode for x [Set element] |
| test.py:129:10:129:10 | ControlFlowNode for y | test.py:129:9:129:29 | ControlFlowNode for SetComp [Set element] |
| test.py:129:16:129:16 | SSA variable y | test.py:129:10:129:10 | ControlFlowNode for y |
| test.py:129:21:129:28 | ControlFlowNode for List [List element] | test.py:129:16:129:16 | SSA variable y |
| test.py:129:22:129:27 | ControlFlowNode for SOURCE | test.py:129:21:129:28 | ControlFlowNode for List [List element] |
| test.py:130:10:130:10 | ControlFlowNode for x [Set element] | test.py:130:10:130:16 | ControlFlowNode for Attribute() |
| test.py:134:9:134:29 | ControlFlowNode for SetComp [Set element] | test.py:135:10:135:10 | ControlFlowNode for x [Set element] |
| test.py:134:10:134:10 | ControlFlowNode for y | test.py:134:9:134:29 | ControlFlowNode for SetComp [Set element] |
| test.py:134:16:134:16 | SSA variable y | test.py:134:10:134:10 | ControlFlowNode for y |
| test.py:134:21:134:28 | ControlFlowNode for List [List element] | test.py:134:16:134:16 | SSA variable y |
| test.py:134:22:134:27 | ControlFlowNode for SOURCE | test.py:134:21:134:28 | ControlFlowNode for List [List element] |
| test.py:135:10:135:10 | ControlFlowNode for x [Set element] | test.py:135:10:135:16 | ControlFlowNode for Attribute() |
| test.py:139:9:139:16 | ControlFlowNode for Set [List element] | test.py:140:21:140:21 | ControlFlowNode for l [List element] |
| test.py:139:10:139:15 | ControlFlowNode for SOURCE | test.py:139:9:139:16 | ControlFlowNode for Set [List element] |
| test.py:140:9:140:22 | ControlFlowNode for SetComp [Set element] | test.py:141:10:141:10 | ControlFlowNode for x [Set element] |
| test.py:140:10:140:10 | ControlFlowNode for y | test.py:140:9:140:22 | ControlFlowNode for SetComp [Set element] |
| test.py:140:16:140:16 | SSA variable y | test.py:140:10:140:10 | ControlFlowNode for y |
| test.py:140:21:140:21 | ControlFlowNode for l [List element] | test.py:140:16:140:16 | SSA variable y |
| test.py:141:10:141:10 | ControlFlowNode for x [Set element] | test.py:141:10:141:16 | ControlFlowNode for Attribute() |
| test.py:152:9:152:21 | ControlFlowNode for Dict [Dictionary element at key s] | test.py:153:10:153:10 | ControlFlowNode for x [Dictionary element at key s] |
| test.py:152:15:152:20 | ControlFlowNode for SOURCE | test.py:152:9:152:21 | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:153:10:153:10 | ControlFlowNode for x [Dictionary element at key s] | test.py:153:10:153:15 | ControlFlowNode for Subscript |
| test.py:157:9:157:21 | ControlFlowNode for Dict [Dictionary element at key s] | test.py:158:10:158:10 | ControlFlowNode for x [Dictionary element at key s] |
| test.py:157:15:157:20 | ControlFlowNode for SOURCE | test.py:157:9:157:21 | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:158:10:158:10 | ControlFlowNode for x [Dictionary element at key s] | test.py:158:10:158:19 | ControlFlowNode for Attribute() |
| test.py:184:9:184:42 | ControlFlowNode for ListComp [List element] | test.py:185:10:185:10 | ControlFlowNode for x [List element] |
| test.py:184:10:184:10 | ControlFlowNode for y | test.py:184:9:184:42 | ControlFlowNode for ListComp [List element] |
| test.py:184:16:184:16 | SSA variable z [List element] | test.py:184:41:184:41 | ControlFlowNode for z [List element] |
| test.py:184:21:184:30 | ControlFlowNode for List [List element, List element] | test.py:184:16:184:16 | SSA variable z [List element] |
| test.py:184:22:184:29 | ControlFlowNode for List [List element] | test.py:184:21:184:30 | ControlFlowNode for List [List element, List element] |
| test.py:184:23:184:28 | ControlFlowNode for SOURCE | test.py:184:22:184:29 | ControlFlowNode for List [List element] |
| test.py:184:36:184:36 | SSA variable y | test.py:184:10:184:10 | ControlFlowNode for y |
| test.py:184:41:184:41 | ControlFlowNode for z [List element] | test.py:184:36:184:36 | SSA variable y |
| test.py:185:10:185:10 | ControlFlowNode for x [List element] | test.py:185:10:185:13 | ControlFlowNode for Subscript |
| test.py:189:9:189:68 | ControlFlowNode for ListComp [List element] | test.py:190:10:190:10 | ControlFlowNode for x [List element] |
| test.py:189:10:189:10 | ControlFlowNode for y | test.py:189:9:189:68 | ControlFlowNode for ListComp [List element] |
| test.py:189:16:189:16 | SSA variable v [List element, List element, ... (3)] | test.py:189:45:189:45 | ControlFlowNode for v [List element, List element, ... (3)] |
| test.py:189:21:189:34 | ControlFlowNode for List [List element, List element, ... (4)] | test.py:189:16:189:16 | SSA variable v [List element, List element, ... (3)] |
| test.py:189:22:189:33 | ControlFlowNode for List [List element, List element, ... (3)] | test.py:189:21:189:34 | ControlFlowNode for List [List element, List element, ... (4)] |
| test.py:189:23:189:32 | ControlFlowNode for List [List element, List element] | test.py:189:22:189:33 | ControlFlowNode for List [List element, List element, ... (3)] |
| test.py:189:24:189:31 | ControlFlowNode for List [List element] | test.py:189:23:189:32 | ControlFlowNode for List [List element, List element] |
| test.py:189:25:189:30 | ControlFlowNode for SOURCE | test.py:189:24:189:31 | ControlFlowNode for List [List element] |
| test.py:189:40:189:40 | SSA variable u [List element, List element] | test.py:189:56:189:56 | ControlFlowNode for u [List element, List element] |
| test.py:189:45:189:45 | ControlFlowNode for v [List element, List element, ... (3)] | test.py:189:40:189:40 | SSA variable u [List element, List element] |
| test.py:189:51:189:51 | SSA variable z [List element] | test.py:189:67:189:67 | ControlFlowNode for z [List element] |
| test.py:189:56:189:56 | ControlFlowNode for u [List element, List element] | test.py:189:51:189:51 | SSA variable z [List element] |
| test.py:189:62:189:62 | SSA variable y | test.py:189:10:189:10 | ControlFlowNode for y |
| test.py:189:67:189:67 | ControlFlowNode for z [List element] | test.py:189:62:189:62 | SSA variable y |
| test.py:190:10:190:10 | ControlFlowNode for x [List element] | test.py:190:10:190:13 | ControlFlowNode for Subscript |
| test.py:200:9:200:42 | ControlFlowNode for ListComp [List element] | test.py:201:10:201:10 | ControlFlowNode for x [List element] |
| test.py:200:10:200:10 | ControlFlowNode for y | test.py:200:9:200:42 | ControlFlowNode for ListComp [List element] |
| test.py:200:16:200:16 | SSA variable y | test.py:200:10:200:10 | ControlFlowNode for y |
| test.py:200:22:200:22 | ControlFlowNode for z | test.py:200:22:200:40 | ControlFlowNode for GeneratorExp [List element] |
| test.py:200:22:200:40 | ControlFlowNode for GeneratorExp [List element] | test.py:200:16:200:16 | SSA variable y |
| test.py:200:28:200:28 | SSA variable z | test.py:200:22:200:22 | ControlFlowNode for z |
| test.py:200:33:200:40 | ControlFlowNode for List [List element] | test.py:200:28:200:28 | SSA variable z |
| test.py:200:34:200:39 | ControlFlowNode for SOURCE | test.py:200:33:200:40 | ControlFlowNode for List [List element] |
| test.py:201:10:201:10 | ControlFlowNode for x [List element] | test.py:201:10:201:13 | ControlFlowNode for Subscript |
| test.py:344:11:344:16 | ControlFlowNode for SOURCE | test.py:344:11:344:17 | ControlFlowNode for Tuple [Tuple element at index 0] |
| test.py:344:11:344:17 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:344:10:344:21 | ControlFlowNode for Subscript |
| test.py:348:10:348:17 | ControlFlowNode for List [List element] | test.py:348:10:348:20 | ControlFlowNode for Subscript |
| test.py:348:11:348:16 | ControlFlowNode for SOURCE | test.py:348:10:348:17 | ControlFlowNode for List [List element] |
| test.py:352:10:352:22 | ControlFlowNode for Dict [Dictionary element at key s] | test.py:352:10:352:27 | ControlFlowNode for Subscript |
| test.py:352:16:352:21 | ControlFlowNode for SOURCE | test.py:352:10:352:22 | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:375:28:375:33 | ControlFlowNode for SOURCE | test.py:375:10:375:34 | ControlFlowNode for second() |
| test.py:457:12:457:17 | ControlFlowNode for SOURCE | test.py:457:10:457:18 | ControlFlowNode for f() |
| test.py:462:28:462:33 | ControlFlowNode for SOURCE | test.py:462:10:462:34 | ControlFlowNode for second() |
| test.py:504:9:504:14 | ControlFlowNode for SOURCE | test.py:506:10:506:10 | ControlFlowNode for a |
| test.py:504:9:504:14 | ControlFlowNode for SOURCE | test.py:511:10:511:10 | ControlFlowNode for b |
| test.py:134:9:134:16 | ControlFlowNode for Set [List element] | test.py:135:21:135:21 | ControlFlowNode for l [List element] |
| test.py:134:10:134:15 | ControlFlowNode for SOURCE | test.py:134:9:134:16 | ControlFlowNode for Set [List element] |
| test.py:135:9:135:22 | ControlFlowNode for SetComp [Set element] | test.py:136:10:136:10 | ControlFlowNode for x [Set element] |
| test.py:135:10:135:10 | ControlFlowNode for y | test.py:135:9:135:22 | ControlFlowNode for SetComp [Set element] |
| test.py:135:16:135:16 | SSA variable y | test.py:135:10:135:10 | ControlFlowNode for y |
| test.py:135:21:135:21 | ControlFlowNode for l [List element] | test.py:135:16:135:16 | SSA variable y |
| test.py:136:10:136:10 | ControlFlowNode for x [Set element] | test.py:136:10:136:16 | ControlFlowNode for Attribute() |
| test.py:146:9:146:21 | ControlFlowNode for Dict [Dictionary element at key s] | test.py:147:10:147:10 | ControlFlowNode for x [Dictionary element at key s] |
| test.py:146:15:146:20 | ControlFlowNode for SOURCE | test.py:146:9:146:21 | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:147:10:147:10 | ControlFlowNode for x [Dictionary element at key s] | test.py:147:10:147:15 | ControlFlowNode for Subscript |
| test.py:151:9:151:21 | ControlFlowNode for Dict [Dictionary element at key s] | test.py:152:10:152:10 | ControlFlowNode for x [Dictionary element at key s] |
| test.py:151:15:151:20 | ControlFlowNode for SOURCE | test.py:151:9:151:21 | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:152:10:152:10 | ControlFlowNode for x [Dictionary element at key s] | test.py:152:10:152:19 | ControlFlowNode for Attribute() |
| test.py:177:9:177:42 | ControlFlowNode for ListComp [List element] | test.py:178:10:178:10 | ControlFlowNode for x [List element] |
| test.py:177:10:177:10 | ControlFlowNode for y | test.py:177:9:177:42 | ControlFlowNode for ListComp [List element] |
| test.py:177:16:177:16 | SSA variable z [List element] | test.py:177:41:177:41 | ControlFlowNode for z [List element] |
| test.py:177:21:177:30 | ControlFlowNode for List [List element, List element] | test.py:177:16:177:16 | SSA variable z [List element] |
| test.py:177:22:177:29 | ControlFlowNode for List [List element] | test.py:177:21:177:30 | ControlFlowNode for List [List element, List element] |
| test.py:177:23:177:28 | ControlFlowNode for SOURCE | test.py:177:22:177:29 | ControlFlowNode for List [List element] |
| test.py:177:36:177:36 | SSA variable y | test.py:177:10:177:10 | ControlFlowNode for y |
| test.py:177:41:177:41 | ControlFlowNode for z [List element] | test.py:177:36:177:36 | SSA variable y |
| test.py:178:10:178:10 | ControlFlowNode for x [List element] | test.py:178:10:178:13 | ControlFlowNode for Subscript |
| test.py:182:9:182:68 | ControlFlowNode for ListComp [List element] | test.py:183:10:183:10 | ControlFlowNode for x [List element] |
| test.py:182:10:182:10 | ControlFlowNode for y | test.py:182:9:182:68 | ControlFlowNode for ListComp [List element] |
| test.py:182:16:182:16 | SSA variable v [List element, List element, ... (3)] | test.py:182:45:182:45 | ControlFlowNode for v [List element, List element, ... (3)] |
| test.py:182:21:182:34 | ControlFlowNode for List [List element, List element, ... (4)] | test.py:182:16:182:16 | SSA variable v [List element, List element, ... (3)] |
| test.py:182:22:182:33 | ControlFlowNode for List [List element, List element, ... (3)] | test.py:182:21:182:34 | ControlFlowNode for List [List element, List element, ... (4)] |
| test.py:182:23:182:32 | ControlFlowNode for List [List element, List element] | test.py:182:22:182:33 | ControlFlowNode for List [List element, List element, ... (3)] |
| test.py:182:24:182:31 | ControlFlowNode for List [List element] | test.py:182:23:182:32 | ControlFlowNode for List [List element, List element] |
| test.py:182:25:182:30 | ControlFlowNode for SOURCE | test.py:182:24:182:31 | ControlFlowNode for List [List element] |
| test.py:182:40:182:40 | SSA variable u [List element, List element] | test.py:182:56:182:56 | ControlFlowNode for u [List element, List element] |
| test.py:182:45:182:45 | ControlFlowNode for v [List element, List element, ... (3)] | test.py:182:40:182:40 | SSA variable u [List element, List element] |
| test.py:182:51:182:51 | SSA variable z [List element] | test.py:182:67:182:67 | ControlFlowNode for z [List element] |
| test.py:182:56:182:56 | ControlFlowNode for u [List element, List element] | test.py:182:51:182:51 | SSA variable z [List element] |
| test.py:182:62:182:62 | SSA variable y | test.py:182:10:182:10 | ControlFlowNode for y |
| test.py:182:67:182:67 | ControlFlowNode for z [List element] | test.py:182:62:182:62 | SSA variable y |
| test.py:183:10:183:10 | ControlFlowNode for x [List element] | test.py:183:10:183:13 | ControlFlowNode for Subscript |
| test.py:193:9:193:42 | ControlFlowNode for ListComp [List element] | test.py:194:10:194:10 | ControlFlowNode for x [List element] |
| test.py:193:10:193:10 | ControlFlowNode for y | test.py:193:9:193:42 | ControlFlowNode for ListComp [List element] |
| test.py:193:16:193:16 | SSA variable y | test.py:193:10:193:10 | ControlFlowNode for y |
| test.py:193:22:193:22 | ControlFlowNode for z | test.py:193:22:193:40 | ControlFlowNode for GeneratorExp [List element] |
| test.py:193:22:193:40 | ControlFlowNode for GeneratorExp [List element] | test.py:193:16:193:16 | SSA variable y |
| test.py:193:28:193:28 | SSA variable z | test.py:193:22:193:22 | ControlFlowNode for z |
| test.py:193:33:193:40 | ControlFlowNode for List [List element] | test.py:193:28:193:28 | SSA variable z |
| test.py:193:34:193:39 | ControlFlowNode for SOURCE | test.py:193:33:193:40 | ControlFlowNode for List [List element] |
| test.py:194:10:194:10 | ControlFlowNode for x [List element] | test.py:194:10:194:13 | ControlFlowNode for Subscript |
| test.py:330:11:330:16 | ControlFlowNode for SOURCE | test.py:330:11:330:17 | ControlFlowNode for Tuple [Tuple element at index 0] |
| test.py:330:11:330:17 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:330:10:330:21 | ControlFlowNode for Subscript |
| test.py:334:10:334:17 | ControlFlowNode for List [List element] | test.py:334:10:334:20 | ControlFlowNode for Subscript |
| test.py:334:11:334:16 | ControlFlowNode for SOURCE | test.py:334:10:334:17 | ControlFlowNode for List [List element] |
| test.py:338:10:338:22 | ControlFlowNode for Dict [Dictionary element at key s] | test.py:338:10:338:27 | ControlFlowNode for Subscript |
| test.py:338:16:338:21 | ControlFlowNode for SOURCE | test.py:338:10:338:22 | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:361:28:361:33 | ControlFlowNode for SOURCE | test.py:361:10:361:34 | ControlFlowNode for second() |
| test.py:414:10:414:15 | ControlFlowNode for SOURCE | test.py:414:10:414:38 | ControlFlowNode for IfExp |
| test.py:422:34:422:39 | ControlFlowNode for SOURCE | test.py:422:10:422:39 | ControlFlowNode for IfExp |
| test.py:446:12:446:17 | ControlFlowNode for SOURCE | test.py:446:10:446:18 | ControlFlowNode for f() |
| test.py:453:28:453:33 | ControlFlowNode for SOURCE | test.py:453:10:453:34 | ControlFlowNode for second() |
| test.py:502:9:502:14 | ControlFlowNode for SOURCE | test.py:504:10:504:10 | ControlFlowNode for a |
| test.py:502:9:502:14 | ControlFlowNode for SOURCE | test.py:509:10:509:10 | ControlFlowNode for b |
nodes
| datamodel.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module datamodel | semmle.label | ModuleVariableNode for Global Variable SOURCE in Module datamodel |
| datamodel.py:13:1:13:6 | GSSA Variable SOURCE | semmle.label | GSSA Variable SOURCE |
@@ -179,126 +183,130 @@ nodes
| test.py:37:9:37:9 | ControlFlowNode for x [Tuple element at index 1] | semmle.label | ControlFlowNode for x [Tuple element at index 1] |
| test.py:37:9:37:12 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:38:10:38:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:50:9:50:14 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:51:10:51:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:57:9:57:16 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str |
| test.py:58:10:58:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:62:9:62:17 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str |
| test.py:63:10:63:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:67:9:67:10 | ControlFlowNode for IntegerLiteral | semmle.label | ControlFlowNode for IntegerLiteral |
| test.py:68:10:68:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:72:9:72:12 | ControlFlowNode for FloatLiteral | semmle.label | ControlFlowNode for FloatLiteral |
| test.py:73:10:73:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:84:10:84:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:85:10:85:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:91:9:91:16 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:91:10:91:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:92:10:92:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:92:10:92:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:101:9:101:37 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:101:10:101:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:102:10:102:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:102:10:102:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:106:9:106:29 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:106:10:106:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:106:16:106:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:106:21:106:28 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:106:22:106:27 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:107:10:107:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:107:10:107:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:111:9:111:16 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:111:10:111:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:112:9:112:22 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:112:10:112:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:112:16:112:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:112:21:112:21 | ControlFlowNode for l [List element] | semmle.label | ControlFlowNode for l [List element] |
| test.py:113:10:113:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:113:10:113:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:124:9:124:16 | ControlFlowNode for Set [List element] | semmle.label | ControlFlowNode for Set [List element] |
| test.py:49:9:49:14 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:50:10:50:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:55:9:55:16 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str |
| test.py:56:10:56:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:60:9:60:17 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str |
| test.py:61:10:61:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:65:9:65:10 | ControlFlowNode for IntegerLiteral | semmle.label | ControlFlowNode for IntegerLiteral |
| test.py:66:10:66:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:70:9:70:12 | ControlFlowNode for FloatLiteral | semmle.label | ControlFlowNode for FloatLiteral |
| test.py:71:10:71:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:81:10:81:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:82:10:82:10 | ControlFlowNode for x | semmle.label | ControlFlowNode for x |
| test.py:87:9:87:16 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:87:10:87:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:88:10:88:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:88:10:88:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:97:9:97:37 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:97:10:97:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:98:10:98:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:98:10:98:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:102:9:102:29 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:102:10:102:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:102:16:102:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:102:21:102:28 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:102:22:102:27 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:103:10:103:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:103:10:103:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:107:9:107:16 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:107:10:107:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:108:9:108:22 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:108:10:108:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:108:16:108:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:108:21:108:21 | ControlFlowNode for l [List element] | semmle.label | ControlFlowNode for l [List element] |
| test.py:109:10:109:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:109:10:109:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:119:9:119:16 | ControlFlowNode for Set [List element] | semmle.label | ControlFlowNode for Set [List element] |
| test.py:119:10:119:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:120:10:120:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:120:10:120:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:124:9:124:37 | ControlFlowNode for SetComp [Set element] | semmle.label | ControlFlowNode for SetComp [Set element] |
| test.py:124:10:124:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:125:10:125:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:125:10:125:10 | ControlFlowNode for x [Set element] | semmle.label | ControlFlowNode for x [Set element] |
| test.py:125:10:125:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:129:9:129:37 | ControlFlowNode for SetComp [Set element] | semmle.label | ControlFlowNode for SetComp [Set element] |
| test.py:129:10:129:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:129:9:129:29 | ControlFlowNode for SetComp [Set element] | semmle.label | ControlFlowNode for SetComp [Set element] |
| test.py:129:10:129:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:129:16:129:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:129:21:129:28 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:129:22:129:27 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:130:10:130:10 | ControlFlowNode for x [Set element] | semmle.label | ControlFlowNode for x [Set element] |
| test.py:130:10:130:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:134:9:134:29 | ControlFlowNode for SetComp [Set element] | semmle.label | ControlFlowNode for SetComp [Set element] |
| test.py:134:10:134:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:134:16:134:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:134:21:134:28 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:134:22:134:27 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:135:10:135:10 | ControlFlowNode for x [Set element] | semmle.label | ControlFlowNode for x [Set element] |
| test.py:135:10:135:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:139:9:139:16 | ControlFlowNode for Set [List element] | semmle.label | ControlFlowNode for Set [List element] |
| test.py:139:10:139:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:140:9:140:22 | ControlFlowNode for SetComp [Set element] | semmle.label | ControlFlowNode for SetComp [Set element] |
| test.py:140:10:140:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:140:16:140:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:140:21:140:21 | ControlFlowNode for l [List element] | semmle.label | ControlFlowNode for l [List element] |
| test.py:141:10:141:10 | ControlFlowNode for x [Set element] | semmle.label | ControlFlowNode for x [Set element] |
| test.py:141:10:141:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:152:9:152:21 | ControlFlowNode for Dict [Dictionary element at key s] | semmle.label | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:152:15:152:20 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:153:10:153:10 | ControlFlowNode for x [Dictionary element at key s] | semmle.label | ControlFlowNode for x [Dictionary element at key s] |
| test.py:153:10:153:15 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:157:9:157:21 | ControlFlowNode for Dict [Dictionary element at key s] | semmle.label | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:157:15:157:20 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:158:10:158:10 | ControlFlowNode for x [Dictionary element at key s] | semmle.label | ControlFlowNode for x [Dictionary element at key s] |
| test.py:158:10:158:19 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:184:9:184:42 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:184:10:184:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:184:16:184:16 | SSA variable z [List element] | semmle.label | SSA variable z [List element] |
| test.py:184:21:184:30 | ControlFlowNode for List [List element, List element] | semmle.label | ControlFlowNode for List [List element, List element] |
| test.py:184:22:184:29 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:184:23:184:28 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:184:36:184:36 | SSA variable y | semmle.label | SSA variable y |
| test.py:184:41:184:41 | ControlFlowNode for z [List element] | semmle.label | ControlFlowNode for z [List element] |
| test.py:185:10:185:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:185:10:185:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:189:9:189:68 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:189:10:189:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:189:16:189:16 | SSA variable v [List element, List element, ... (3)] | semmle.label | SSA variable v [List element, List element, ... (3)] |
| test.py:189:21:189:34 | ControlFlowNode for List [List element, List element, ... (4)] | semmle.label | ControlFlowNode for List [List element, List element, ... (4)] |
| test.py:189:22:189:33 | ControlFlowNode for List [List element, List element, ... (3)] | semmle.label | ControlFlowNode for List [List element, List element, ... (3)] |
| test.py:189:23:189:32 | ControlFlowNode for List [List element, List element] | semmle.label | ControlFlowNode for List [List element, List element] |
| test.py:189:24:189:31 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:189:25:189:30 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:189:40:189:40 | SSA variable u [List element, List element] | semmle.label | SSA variable u [List element, List element] |
| test.py:189:45:189:45 | ControlFlowNode for v [List element, List element, ... (3)] | semmle.label | ControlFlowNode for v [List element, List element, ... (3)] |
| test.py:189:51:189:51 | SSA variable z [List element] | semmle.label | SSA variable z [List element] |
| test.py:189:56:189:56 | ControlFlowNode for u [List element, List element] | semmle.label | ControlFlowNode for u [List element, List element] |
| test.py:189:62:189:62 | SSA variable y | semmle.label | SSA variable y |
| test.py:189:67:189:67 | ControlFlowNode for z [List element] | semmle.label | ControlFlowNode for z [List element] |
| test.py:190:10:190:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:190:10:190:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:200:9:200:42 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:200:10:200:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:200:16:200:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:200:22:200:22 | ControlFlowNode for z | semmle.label | ControlFlowNode for z |
| test.py:200:22:200:40 | ControlFlowNode for GeneratorExp [List element] | semmle.label | ControlFlowNode for GeneratorExp [List element] |
| test.py:200:28:200:28 | SSA variable z | semmle.label | SSA variable z |
| test.py:200:33:200:40 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:200:34:200:39 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:201:10:201:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:201:10:201:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:344:10:344:21 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:344:11:344:16 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:344:11:344:17 | ControlFlowNode for Tuple [Tuple element at index 0] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0] |
| test.py:348:10:348:17 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:348:10:348:20 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:348:11:348:16 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:352:10:352:22 | ControlFlowNode for Dict [Dictionary element at key s] | semmle.label | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:352:10:352:27 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:352:16:352:21 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:375:10:375:34 | ControlFlowNode for second() | semmle.label | ControlFlowNode for second() |
| test.py:375:28:375:33 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:457:10:457:18 | ControlFlowNode for f() | semmle.label | ControlFlowNode for f() |
| test.py:457:12:457:17 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:462:10:462:34 | ControlFlowNode for second() | semmle.label | ControlFlowNode for second() |
| test.py:462:28:462:33 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:504:9:504:14 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:506:10:506:10 | ControlFlowNode for a | semmle.label | ControlFlowNode for a |
| test.py:511:10:511:10 | ControlFlowNode for b | semmle.label | ControlFlowNode for b |
| test.py:134:9:134:16 | ControlFlowNode for Set [List element] | semmle.label | ControlFlowNode for Set [List element] |
| test.py:134:10:134:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:135:9:135:22 | ControlFlowNode for SetComp [Set element] | semmle.label | ControlFlowNode for SetComp [Set element] |
| test.py:135:10:135:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:135:16:135:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:135:21:135:21 | ControlFlowNode for l [List element] | semmle.label | ControlFlowNode for l [List element] |
| test.py:136:10:136:10 | ControlFlowNode for x [Set element] | semmle.label | ControlFlowNode for x [Set element] |
| test.py:136:10:136:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:146:9:146:21 | ControlFlowNode for Dict [Dictionary element at key s] | semmle.label | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:146:15:146:20 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:147:10:147:10 | ControlFlowNode for x [Dictionary element at key s] | semmle.label | ControlFlowNode for x [Dictionary element at key s] |
| test.py:147:10:147:15 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:151:9:151:21 | ControlFlowNode for Dict [Dictionary element at key s] | semmle.label | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:151:15:151:20 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:152:10:152:10 | ControlFlowNode for x [Dictionary element at key s] | semmle.label | ControlFlowNode for x [Dictionary element at key s] |
| test.py:152:10:152:19 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() |
| test.py:177:9:177:42 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:177:10:177:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:177:16:177:16 | SSA variable z [List element] | semmle.label | SSA variable z [List element] |
| test.py:177:21:177:30 | ControlFlowNode for List [List element, List element] | semmle.label | ControlFlowNode for List [List element, List element] |
| test.py:177:22:177:29 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:177:23:177:28 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:177:36:177:36 | SSA variable y | semmle.label | SSA variable y |
| test.py:177:41:177:41 | ControlFlowNode for z [List element] | semmle.label | ControlFlowNode for z [List element] |
| test.py:178:10:178:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:178:10:178:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:182:9:182:68 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:182:10:182:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:182:16:182:16 | SSA variable v [List element, List element, ... (3)] | semmle.label | SSA variable v [List element, List element, ... (3)] |
| test.py:182:21:182:34 | ControlFlowNode for List [List element, List element, ... (4)] | semmle.label | ControlFlowNode for List [List element, List element, ... (4)] |
| test.py:182:22:182:33 | ControlFlowNode for List [List element, List element, ... (3)] | semmle.label | ControlFlowNode for List [List element, List element, ... (3)] |
| test.py:182:23:182:32 | ControlFlowNode for List [List element, List element] | semmle.label | ControlFlowNode for List [List element, List element] |
| test.py:182:24:182:31 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:182:25:182:30 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:182:40:182:40 | SSA variable u [List element, List element] | semmle.label | SSA variable u [List element, List element] |
| test.py:182:45:182:45 | ControlFlowNode for v [List element, List element, ... (3)] | semmle.label | ControlFlowNode for v [List element, List element, ... (3)] |
| test.py:182:51:182:51 | SSA variable z [List element] | semmle.label | SSA variable z [List element] |
| test.py:182:56:182:56 | ControlFlowNode for u [List element, List element] | semmle.label | ControlFlowNode for u [List element, List element] |
| test.py:182:62:182:62 | SSA variable y | semmle.label | SSA variable y |
| test.py:182:67:182:67 | ControlFlowNode for z [List element] | semmle.label | ControlFlowNode for z [List element] |
| test.py:183:10:183:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:183:10:183:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:193:9:193:42 | ControlFlowNode for ListComp [List element] | semmle.label | ControlFlowNode for ListComp [List element] |
| test.py:193:10:193:10 | ControlFlowNode for y | semmle.label | ControlFlowNode for y |
| test.py:193:16:193:16 | SSA variable y | semmle.label | SSA variable y |
| test.py:193:22:193:22 | ControlFlowNode for z | semmle.label | ControlFlowNode for z |
| test.py:193:22:193:40 | ControlFlowNode for GeneratorExp [List element] | semmle.label | ControlFlowNode for GeneratorExp [List element] |
| test.py:193:28:193:28 | SSA variable z | semmle.label | SSA variable z |
| test.py:193:33:193:40 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:193:34:193:39 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:194:10:194:10 | ControlFlowNode for x [List element] | semmle.label | ControlFlowNode for x [List element] |
| test.py:194:10:194:13 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:330:10:330:21 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:330:11:330:16 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:330:11:330:17 | ControlFlowNode for Tuple [Tuple element at index 0] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0] |
| test.py:334:10:334:17 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
| test.py:334:10:334:20 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:334:11:334:16 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:338:10:338:22 | ControlFlowNode for Dict [Dictionary element at key s] | semmle.label | ControlFlowNode for Dict [Dictionary element at key s] |
| test.py:338:10:338:27 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
| test.py:338:16:338:21 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:361:10:361:34 | ControlFlowNode for second() | semmle.label | ControlFlowNode for second() |
| test.py:361:28:361:33 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:414:10:414:15 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:414:10:414:38 | ControlFlowNode for IfExp | semmle.label | ControlFlowNode for IfExp |
| test.py:422:10:422:39 | ControlFlowNode for IfExp | semmle.label | ControlFlowNode for IfExp |
| test.py:422:34:422:39 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:446:10:446:18 | ControlFlowNode for f() | semmle.label | ControlFlowNode for f() |
| test.py:446:12:446:17 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:453:10:453:34 | ControlFlowNode for second() | semmle.label | ControlFlowNode for second() |
| test.py:453:28:453:33 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:502:9:502:14 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
| test.py:504:10:504:10 | ControlFlowNode for a | semmle.label | ControlFlowNode for a |
| test.py:509:10:509:10 | ControlFlowNode for b | semmle.label | ControlFlowNode for b |
#select
| datamodel.py:38:6:38:17 | ControlFlowNode for f() | datamodel.py:13:10:13:17 | ControlFlowNode for Str | datamodel.py:38:6:38:17 | ControlFlowNode for f() | Flow found |
| datamodel.py:38:6:38:17 | ControlFlowNode for f() | datamodel.py:38:8:38:13 | ControlFlowNode for SOURCE | datamodel.py:38:6:38:17 | ControlFlowNode for f() | Flow found |
@@ -326,53 +334,57 @@ nodes
| datamodel.py:159:6:159:17 | ControlFlowNode for Attribute | datamodel.py:152:14:152:19 | ControlFlowNode for SOURCE | datamodel.py:159:6:159:17 | ControlFlowNode for Attribute | Flow found |
| test.py:38:10:38:10 | ControlFlowNode for y | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:38:10:38:10 | ControlFlowNode for y | Flow found |
| test.py:38:10:38:10 | ControlFlowNode for y | test.py:36:21:36:26 | ControlFlowNode for SOURCE | test.py:38:10:38:10 | ControlFlowNode for y | Flow found |
| test.py:51:10:51:10 | ControlFlowNode for x | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:51:10:51:10 | ControlFlowNode for x | Flow found |
| test.py:51:10:51:10 | ControlFlowNode for x | test.py:50:9:50:14 | ControlFlowNode for SOURCE | test.py:51:10:51:10 | ControlFlowNode for x | Flow found |
| test.py:58:10:58:10 | ControlFlowNode for x | test.py:57:9:57:16 | ControlFlowNode for Str | test.py:58:10:58:10 | ControlFlowNode for x | Flow found |
| test.py:63:10:63:10 | ControlFlowNode for x | test.py:62:9:62:17 | ControlFlowNode for Str | test.py:63:10:63:10 | ControlFlowNode for x | Flow found |
| test.py:68:10:68:10 | ControlFlowNode for x | test.py:67:9:67:10 | ControlFlowNode for IntegerLiteral | test.py:68:10:68:10 | ControlFlowNode for x | Flow found |
| test.py:73:10:73:10 | ControlFlowNode for x | test.py:72:9:72:12 | ControlFlowNode for FloatLiteral | test.py:73:10:73:10 | ControlFlowNode for x | Flow found |
| test.py:85:10:85:10 | ControlFlowNode for x | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:85:10:85:10 | ControlFlowNode for x | Flow found |
| test.py:85:10:85:10 | ControlFlowNode for x | test.py:84:10:84:15 | ControlFlowNode for SOURCE | test.py:85:10:85:10 | ControlFlowNode for x | Flow found |
| test.py:92:10:92:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:92:10:92:13 | ControlFlowNode for Subscript | Flow found |
| test.py:92:10:92:13 | ControlFlowNode for Subscript | test.py:91:10:91:15 | ControlFlowNode for SOURCE | test.py:92:10:92:13 | ControlFlowNode for Subscript | Flow found |
| test.py:102:10:102:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:102:10:102:13 | ControlFlowNode for Subscript | Flow found |
| test.py:102:10:102:13 | ControlFlowNode for Subscript | test.py:101:10:101:15 | ControlFlowNode for SOURCE | test.py:102:10:102:13 | ControlFlowNode for Subscript | Flow found |
| test.py:107:10:107:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:107:10:107:13 | ControlFlowNode for Subscript | Flow found |
| test.py:107:10:107:13 | ControlFlowNode for Subscript | test.py:106:22:106:27 | ControlFlowNode for SOURCE | test.py:107:10:107:13 | ControlFlowNode for Subscript | Flow found |
| test.py:113:10:113:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:113:10:113:13 | ControlFlowNode for Subscript | Flow found |
| test.py:113:10:113:13 | ControlFlowNode for Subscript | test.py:111:10:111:15 | ControlFlowNode for SOURCE | test.py:113:10:113:13 | ControlFlowNode for Subscript | Flow found |
| test.py:50:10:50:10 | ControlFlowNode for x | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:50:10:50:10 | ControlFlowNode for x | Flow found |
| test.py:50:10:50:10 | ControlFlowNode for x | test.py:49:9:49:14 | ControlFlowNode for SOURCE | test.py:50:10:50:10 | ControlFlowNode for x | Flow found |
| test.py:56:10:56:10 | ControlFlowNode for x | test.py:55:9:55:16 | ControlFlowNode for Str | test.py:56:10:56:10 | ControlFlowNode for x | Flow found |
| test.py:61:10:61:10 | ControlFlowNode for x | test.py:60:9:60:17 | ControlFlowNode for Str | test.py:61:10:61:10 | ControlFlowNode for x | Flow found |
| test.py:66:10:66:10 | ControlFlowNode for x | test.py:65:9:65:10 | ControlFlowNode for IntegerLiteral | test.py:66:10:66:10 | ControlFlowNode for x | Flow found |
| test.py:71:10:71:10 | ControlFlowNode for x | test.py:70:9:70:12 | ControlFlowNode for FloatLiteral | test.py:71:10:71:10 | ControlFlowNode for x | Flow found |
| test.py:82:10:82:10 | ControlFlowNode for x | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:82:10:82:10 | ControlFlowNode for x | Flow found |
| test.py:82:10:82:10 | ControlFlowNode for x | test.py:81:10:81:15 | ControlFlowNode for SOURCE | test.py:82:10:82:10 | ControlFlowNode for x | Flow found |
| test.py:88:10:88:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:88:10:88:13 | ControlFlowNode for Subscript | Flow found |
| test.py:88:10:88:13 | ControlFlowNode for Subscript | test.py:87:10:87:15 | ControlFlowNode for SOURCE | test.py:88:10:88:13 | ControlFlowNode for Subscript | Flow found |
| test.py:98:10:98:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:98:10:98:13 | ControlFlowNode for Subscript | Flow found |
| test.py:98:10:98:13 | ControlFlowNode for Subscript | test.py:97:10:97:15 | ControlFlowNode for SOURCE | test.py:98:10:98:13 | ControlFlowNode for Subscript | Flow found |
| test.py:103:10:103:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:103:10:103:13 | ControlFlowNode for Subscript | Flow found |
| test.py:103:10:103:13 | ControlFlowNode for Subscript | test.py:102:22:102:27 | ControlFlowNode for SOURCE | test.py:103:10:103:13 | ControlFlowNode for Subscript | Flow found |
| test.py:109:10:109:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:109:10:109:13 | ControlFlowNode for Subscript | Flow found |
| test.py:109:10:109:13 | ControlFlowNode for Subscript | test.py:107:10:107:15 | ControlFlowNode for SOURCE | test.py:109:10:109:13 | ControlFlowNode for Subscript | Flow found |
| test.py:120:10:120:16 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:120:10:120:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:120:10:120:16 | ControlFlowNode for Attribute() | test.py:119:10:119:15 | ControlFlowNode for SOURCE | test.py:120:10:120:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:125:10:125:16 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:125:10:125:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:125:10:125:16 | ControlFlowNode for Attribute() | test.py:124:10:124:15 | ControlFlowNode for SOURCE | test.py:125:10:125:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:130:10:130:16 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:130:10:130:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:130:10:130:16 | ControlFlowNode for Attribute() | test.py:129:10:129:15 | ControlFlowNode for SOURCE | test.py:130:10:130:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:135:10:135:16 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:135:10:135:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:135:10:135:16 | ControlFlowNode for Attribute() | test.py:134:22:134:27 | ControlFlowNode for SOURCE | test.py:135:10:135:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:141:10:141:16 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:141:10:141:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:141:10:141:16 | ControlFlowNode for Attribute() | test.py:139:10:139:15 | ControlFlowNode for SOURCE | test.py:141:10:141:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:153:10:153:15 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:153:10:153:15 | ControlFlowNode for Subscript | Flow found |
| test.py:153:10:153:15 | ControlFlowNode for Subscript | test.py:152:15:152:20 | ControlFlowNode for SOURCE | test.py:153:10:153:15 | ControlFlowNode for Subscript | Flow found |
| test.py:158:10:158:19 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:158:10:158:19 | ControlFlowNode for Attribute() | Flow found |
| test.py:158:10:158:19 | ControlFlowNode for Attribute() | test.py:157:15:157:20 | ControlFlowNode for SOURCE | test.py:158:10:158:19 | ControlFlowNode for Attribute() | Flow found |
| test.py:185:10:185:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:185:10:185:13 | ControlFlowNode for Subscript | Flow found |
| test.py:185:10:185:13 | ControlFlowNode for Subscript | test.py:184:23:184:28 | ControlFlowNode for SOURCE | test.py:185:10:185:13 | ControlFlowNode for Subscript | Flow found |
| test.py:190:10:190:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:190:10:190:13 | ControlFlowNode for Subscript | Flow found |
| test.py:190:10:190:13 | ControlFlowNode for Subscript | test.py:189:25:189:30 | ControlFlowNode for SOURCE | test.py:190:10:190:13 | ControlFlowNode for Subscript | Flow found |
| test.py:201:10:201:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:201:10:201:13 | ControlFlowNode for Subscript | Flow found |
| test.py:201:10:201:13 | ControlFlowNode for Subscript | test.py:200:34:200:39 | ControlFlowNode for SOURCE | test.py:201:10:201:13 | ControlFlowNode for Subscript | Flow found |
| test.py:344:10:344:21 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:344:10:344:21 | ControlFlowNode for Subscript | Flow found |
| test.py:344:10:344:21 | ControlFlowNode for Subscript | test.py:344:11:344:16 | ControlFlowNode for SOURCE | test.py:344:10:344:21 | ControlFlowNode for Subscript | Flow found |
| test.py:348:10:348:20 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:348:10:348:20 | ControlFlowNode for Subscript | Flow found |
| test.py:348:10:348:20 | ControlFlowNode for Subscript | test.py:348:11:348:16 | ControlFlowNode for SOURCE | test.py:348:10:348:20 | ControlFlowNode for Subscript | Flow found |
| test.py:352:10:352:27 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:352:10:352:27 | ControlFlowNode for Subscript | Flow found |
| test.py:352:10:352:27 | ControlFlowNode for Subscript | test.py:352:16:352:21 | ControlFlowNode for SOURCE | test.py:352:10:352:27 | ControlFlowNode for Subscript | Flow found |
| test.py:375:10:375:34 | ControlFlowNode for second() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:375:10:375:34 | ControlFlowNode for second() | Flow found |
| test.py:375:10:375:34 | ControlFlowNode for second() | test.py:375:28:375:33 | ControlFlowNode for SOURCE | test.py:375:10:375:34 | ControlFlowNode for second() | Flow found |
| test.py:457:10:457:18 | ControlFlowNode for f() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:457:10:457:18 | ControlFlowNode for f() | Flow found |
| test.py:457:10:457:18 | ControlFlowNode for f() | test.py:457:12:457:17 | ControlFlowNode for SOURCE | test.py:457:10:457:18 | ControlFlowNode for f() | Flow found |
| test.py:462:10:462:34 | ControlFlowNode for second() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:462:10:462:34 | ControlFlowNode for second() | Flow found |
| test.py:462:10:462:34 | ControlFlowNode for second() | test.py:462:28:462:33 | ControlFlowNode for SOURCE | test.py:462:10:462:34 | ControlFlowNode for second() | Flow found |
| test.py:506:10:506:10 | ControlFlowNode for a | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:506:10:506:10 | ControlFlowNode for a | Flow found |
| test.py:506:10:506:10 | ControlFlowNode for a | test.py:504:9:504:14 | ControlFlowNode for SOURCE | test.py:506:10:506:10 | ControlFlowNode for a | Flow found |
| test.py:511:10:511:10 | ControlFlowNode for b | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:511:10:511:10 | ControlFlowNode for b | Flow found |
| test.py:511:10:511:10 | ControlFlowNode for b | test.py:504:9:504:14 | ControlFlowNode for SOURCE | test.py:511:10:511:10 | ControlFlowNode for b | Flow found |
| test.py:130:10:130:16 | ControlFlowNode for Attribute() | test.py:129:22:129:27 | ControlFlowNode for SOURCE | test.py:130:10:130:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:136:10:136:16 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:136:10:136:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:136:10:136:16 | ControlFlowNode for Attribute() | test.py:134:10:134:15 | ControlFlowNode for SOURCE | test.py:136:10:136:16 | ControlFlowNode for Attribute() | Flow found |
| test.py:147:10:147:15 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:147:10:147:15 | ControlFlowNode for Subscript | Flow found |
| test.py:147:10:147:15 | ControlFlowNode for Subscript | test.py:146:15:146:20 | ControlFlowNode for SOURCE | test.py:147:10:147:15 | ControlFlowNode for Subscript | Flow found |
| test.py:152:10:152:19 | ControlFlowNode for Attribute() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:152:10:152:19 | ControlFlowNode for Attribute() | Flow found |
| test.py:152:10:152:19 | ControlFlowNode for Attribute() | test.py:151:15:151:20 | ControlFlowNode for SOURCE | test.py:152:10:152:19 | ControlFlowNode for Attribute() | Flow found |
| test.py:178:10:178:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:178:10:178:13 | ControlFlowNode for Subscript | Flow found |
| test.py:178:10:178:13 | ControlFlowNode for Subscript | test.py:177:23:177:28 | ControlFlowNode for SOURCE | test.py:178:10:178:13 | ControlFlowNode for Subscript | Flow found |
| test.py:183:10:183:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:183:10:183:13 | ControlFlowNode for Subscript | Flow found |
| test.py:183:10:183:13 | ControlFlowNode for Subscript | test.py:182:25:182:30 | ControlFlowNode for SOURCE | test.py:183:10:183:13 | ControlFlowNode for Subscript | Flow found |
| test.py:194:10:194:13 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:194:10:194:13 | ControlFlowNode for Subscript | Flow found |
| test.py:194:10:194:13 | ControlFlowNode for Subscript | test.py:193:34:193:39 | ControlFlowNode for SOURCE | test.py:194:10:194:13 | ControlFlowNode for Subscript | Flow found |
| test.py:330:10:330:21 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:330:10:330:21 | ControlFlowNode for Subscript | Flow found |
| test.py:330:10:330:21 | ControlFlowNode for Subscript | test.py:330:11:330:16 | ControlFlowNode for SOURCE | test.py:330:10:330:21 | ControlFlowNode for Subscript | Flow found |
| test.py:334:10:334:20 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:334:10:334:20 | ControlFlowNode for Subscript | Flow found |
| test.py:334:10:334:20 | ControlFlowNode for Subscript | test.py:334:11:334:16 | ControlFlowNode for SOURCE | test.py:334:10:334:20 | ControlFlowNode for Subscript | Flow found |
| test.py:338:10:338:27 | ControlFlowNode for Subscript | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:338:10:338:27 | ControlFlowNode for Subscript | Flow found |
| test.py:338:10:338:27 | ControlFlowNode for Subscript | test.py:338:16:338:21 | ControlFlowNode for SOURCE | test.py:338:10:338:27 | ControlFlowNode for Subscript | Flow found |
| test.py:361:10:361:34 | ControlFlowNode for second() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:361:10:361:34 | ControlFlowNode for second() | Flow found |
| test.py:361:10:361:34 | ControlFlowNode for second() | test.py:361:28:361:33 | ControlFlowNode for SOURCE | test.py:361:10:361:34 | ControlFlowNode for second() | Flow found |
| test.py:414:10:414:38 | ControlFlowNode for IfExp | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:414:10:414:38 | ControlFlowNode for IfExp | Flow found |
| test.py:414:10:414:38 | ControlFlowNode for IfExp | test.py:414:10:414:15 | ControlFlowNode for SOURCE | test.py:414:10:414:38 | ControlFlowNode for IfExp | Flow found |
| test.py:422:10:422:39 | ControlFlowNode for IfExp | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:422:10:422:39 | ControlFlowNode for IfExp | Flow found |
| test.py:422:10:422:39 | ControlFlowNode for IfExp | test.py:422:34:422:39 | ControlFlowNode for SOURCE | test.py:422:10:422:39 | ControlFlowNode for IfExp | Flow found |
| test.py:446:10:446:18 | ControlFlowNode for f() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:446:10:446:18 | ControlFlowNode for f() | Flow found |
| test.py:446:10:446:18 | ControlFlowNode for f() | test.py:446:12:446:17 | ControlFlowNode for SOURCE | test.py:446:10:446:18 | ControlFlowNode for f() | Flow found |
| test.py:453:10:453:34 | ControlFlowNode for second() | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:453:10:453:34 | ControlFlowNode for second() | Flow found |
| test.py:453:10:453:34 | ControlFlowNode for second() | test.py:453:28:453:33 | ControlFlowNode for SOURCE | test.py:453:10:453:34 | ControlFlowNode for second() | Flow found |
| test.py:504:10:504:10 | ControlFlowNode for a | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:504:10:504:10 | ControlFlowNode for a | Flow found |
| test.py:504:10:504:10 | ControlFlowNode for a | test.py:502:9:502:14 | ControlFlowNode for SOURCE | test.py:504:10:504:10 | ControlFlowNode for a | Flow found |
| test.py:509:10:509:10 | ControlFlowNode for b | test.py:14:10:14:17 | ControlFlowNode for Str | test.py:509:10:509:10 | ControlFlowNode for b | Flow found |
| test.py:509:10:509:10 | ControlFlowNode for b | test.py:502:9:502:14 | ControlFlowNode for SOURCE | test.py:509:10:509:10 | ControlFlowNode for b | Flow found |

View File

@@ -6,31 +6,31 @@
| test.py:37:5:37:5 | SSA variable y | test.py:38:5:38:11 | SSA variable y |
| test.py:37:5:37:5 | SSA variable y | test.py:38:10:38:10 | ControlFlowNode for y |
| test.py:37:9:37:12 | ControlFlowNode for Subscript | test.py:37:5:37:5 | SSA variable y |
| test.py:188:1:188:53 | GSSA Variable SINK | test.py:190:5:190:8 | ControlFlowNode for SINK |
| test.py:188:1:188:53 | GSSA Variable SOURCE | test.py:189:25:189:30 | ControlFlowNode for SOURCE |
| test.py:189:5:189:5 | SSA variable x | test.py:190:10:190:10 | ControlFlowNode for x |
| test.py:189:9:189:68 | ControlFlowNode for ListComp | test.py:189:5:189:5 | SSA variable x |
| test.py:189:9:189:68 | SSA variable u | test.py:189:9:189:68 | SSA variable u |
| test.py:189:9:189:68 | SSA variable u | test.py:189:9:189:68 | SSA variable u |
| test.py:189:9:189:68 | SSA variable u | test.py:189:9:189:68 | SSA variable u |
| test.py:189:9:189:68 | SSA variable v | test.py:189:9:189:68 | SSA variable v |
| test.py:189:9:189:68 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:9:189:68 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:9:189:68 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:9:189:68 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:9:189:68 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:9:189:68 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:9:189:68 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:9:189:68 | SSA variable z | test.py:189:9:189:68 | SSA variable z |
| test.py:189:9:189:68 | SSA variable z | test.py:189:9:189:68 | SSA variable z |
| test.py:189:9:189:68 | SSA variable z | test.py:189:9:189:68 | SSA variable z |
| test.py:189:9:189:68 | SSA variable z | test.py:189:9:189:68 | SSA variable z |
| test.py:189:9:189:68 | SSA variable z | test.py:189:9:189:68 | SSA variable z |
| test.py:189:16:189:16 | SSA variable v | test.py:189:9:189:68 | SSA variable v |
| test.py:189:16:189:16 | SSA variable v | test.py:189:45:189:45 | ControlFlowNode for v |
| test.py:189:40:189:40 | SSA variable u | test.py:189:9:189:68 | SSA variable u |
| test.py:189:40:189:40 | SSA variable u | test.py:189:56:189:56 | ControlFlowNode for u |
| test.py:189:51:189:51 | SSA variable z | test.py:189:9:189:68 | SSA variable z |
| test.py:189:51:189:51 | SSA variable z | test.py:189:67:189:67 | ControlFlowNode for z |
| test.py:189:62:189:62 | SSA variable y | test.py:189:9:189:68 | SSA variable y |
| test.py:189:62:189:62 | SSA variable y | test.py:189:10:189:10 | ControlFlowNode for y |
| test.py:181:1:181:53 | GSSA Variable SINK | test.py:183:5:183:8 | ControlFlowNode for SINK |
| test.py:181:1:181:53 | GSSA Variable SOURCE | test.py:182:25:182:30 | ControlFlowNode for SOURCE |
| test.py:182:5:182:5 | SSA variable x | test.py:183:10:183:10 | ControlFlowNode for x |
| test.py:182:9:182:68 | ControlFlowNode for ListComp | test.py:182:5:182:5 | SSA variable x |
| test.py:182:9:182:68 | SSA variable u | test.py:182:9:182:68 | SSA variable u |
| test.py:182:9:182:68 | SSA variable u | test.py:182:9:182:68 | SSA variable u |
| test.py:182:9:182:68 | SSA variable u | test.py:182:9:182:68 | SSA variable u |
| test.py:182:9:182:68 | SSA variable v | test.py:182:9:182:68 | SSA variable v |
| test.py:182:9:182:68 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:9:182:68 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:9:182:68 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:9:182:68 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:9:182:68 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:9:182:68 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:9:182:68 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:9:182:68 | SSA variable z | test.py:182:9:182:68 | SSA variable z |
| test.py:182:9:182:68 | SSA variable z | test.py:182:9:182:68 | SSA variable z |
| test.py:182:9:182:68 | SSA variable z | test.py:182:9:182:68 | SSA variable z |
| test.py:182:9:182:68 | SSA variable z | test.py:182:9:182:68 | SSA variable z |
| test.py:182:9:182:68 | SSA variable z | test.py:182:9:182:68 | SSA variable z |
| test.py:182:16:182:16 | SSA variable v | test.py:182:9:182:68 | SSA variable v |
| test.py:182:16:182:16 | SSA variable v | test.py:182:45:182:45 | ControlFlowNode for v |
| test.py:182:40:182:40 | SSA variable u | test.py:182:9:182:68 | SSA variable u |
| test.py:182:40:182:40 | SSA variable u | test.py:182:56:182:56 | ControlFlowNode for u |
| test.py:182:51:182:51 | SSA variable z | test.py:182:9:182:68 | SSA variable z |
| test.py:182:51:182:51 | SSA variable z | test.py:182:67:182:67 | ControlFlowNode for z |
| test.py:182:62:182:62 | SSA variable y | test.py:182:9:182:68 | SSA variable y |
| test.py:182:62:182:62 | SSA variable y | test.py:182:10:182:10 | ControlFlowNode for y |

View File

@@ -43,16 +43,14 @@ def test_tuple_negative():
y = x[0]
SINK_F(y)
# 6.2.1. Identifiers (Names)
def test_names():
x = SOURCE
SINK(x)
# 6.2.2. Literals
def test_string_literal():
x = "source"
SINK(x)
@@ -77,16 +75,14 @@ def test_imagnumber_literal():
x = 42j
SINK(x) # Flow missing
# 6.2.3. Parenthesized forms
def test_parenthesized_form():
x = (SOURCE)
SINK(x)
# 6.2.5. List displays
def test_list_display():
x = [SOURCE]
SINK(x[0])
@@ -114,12 +110,11 @@ def test_list_comprehension_inflow():
def test_nested_list_display():
x = [* [SOURCE]]
x = [*[SOURCE]]
SINK(x[0]) # Flow missing
# 6.2.6. Set displays
def test_set_display():
x = {SOURCE}
SINK(x.pop())
@@ -142,12 +137,11 @@ def test_set_comprehension_inflow():
def test_nested_set_display():
x = {* {SOURCE}}
x = {*{SOURCE}}
SINK(x.pop()) # Flow missing
# 6.2.7. Dictionary displays
def test_dict_display():
x = {"s": SOURCE}
SINK(x["s"])
@@ -169,17 +163,16 @@ def test_dict_comprehension_pop():
def test_nested_dict_display():
x = {** {"s": SOURCE}}
x = {**{"s": SOURCE}}
SINK(x["s"]) # Flow missing
def test_nested_dict_display_pop():
x = {** {"s": SOURCE}}
x = {**{"s": SOURCE}}
SINK(x.pop("s")) # Flow missing
# Nested comprehensions
def test_nested_comprehension():
x = [y for z in [[SOURCE]] for y in z]
SINK(x[0])
@@ -200,16 +193,14 @@ def test_nested_comprehension_paren():
x = [y for y in (z for z in [SOURCE])]
SINK(x[0])
# 6.2.8. Generator expressions
def test_generator():
x = (SOURCE for y in [NONSOURCE])
SINK([*x][0]) # Flow missing
# 6.2.9. Yield expressions
def gen(x):
yield x
@@ -227,16 +218,14 @@ def test_yield_from():
g = gen_from(SOURCE)
SINK(next(g)) # Flow missing
# a statement rather than an expression, but related to generators
def test_for():
for x in gen(SOURCE):
SINK(x) # Flow missing
# 6.2.9.1. Generator-iterator methods
def test___next__():
g = gen(SOURCE)
SINK(g.__next__()) # Flow missing
@@ -266,21 +255,20 @@ def test_throw():
n = next(g)
SINK(g.throw(TypeError)) # Flow missing
# no `test_close` as `close` involves no data flow
# 6.2.9.3. Asynchronous generator functions
async def agen(x):
yield x
# 6.2.9.4. Asynchronous generator-iterator methods
# helper to run async test functions
def runa(a):
import asyncio
asyncio.run(a)
@@ -325,9 +313,8 @@ async def atest_athrow():
def test_athrow():
runa(atest_athrow())
# 6.3.1. Attribute references
class C:
a = SOURCE
@@ -335,11 +322,10 @@ class C:
def test_attribute_reference():
SINK(C.a) # Flow missing
# overriding __getattr__ should be tested by the class coverage tests
# 6.3.2. Subscriptions
def test_subscription_tuple():
SINK((SOURCE,)[0])
@@ -351,6 +337,7 @@ def test_subscription_list():
def test_subscription_mapping():
SINK({"s": SOURCE}["s"])
# overriding __getitem__ should be tested by the class coverage tests
@@ -362,11 +349,10 @@ def test_slicing():
s = l[0:1:1]
SINK(s[0]) # Flow missing
# The grammar seems to allow `l[0:1:1, 0:1]`, but the interpreter does not like it
# 6.3.4. Calls
def second(a, b):
return b
@@ -406,79 +392,92 @@ def f_extra_keyword(a, **b):
def test_call_extra_keyword():
SINK(f_extra_keyword(NONSOURCE, b=SOURCE)) # Flow missing
# return the name of the first extra keyword argument
def f_extra_keyword_flow(**a):
return [*a][0]
# call the function with our source as the name of the keyword arguemnt
def test_call_extra_keyword_flow():
SINK(f_extra_keyword_flow(**{SOURCE: None})) # Flow missing
# 6.12. Assignment expressions
def test_assignment_expression():
x = NONSOURCE
SINK(x := SOURCE) # Flow missing
# 6.13. Conditional expressions
def test_conditional_true():
SINK(SOURCE if True else NONSOURCE) # Flow missing
SINK(SOURCE if True else NONSOURCE)
def test_conditional_true_guards():
SINK_F(NONSOURCE if True else SOURCE)
def test_conditional_false():
SINK(NONSOURCE if False else SOURCE) # Flow missing
SINK(NONSOURCE if False else SOURCE)
def test_conditional_false_guards():
SINK_F(SOURCE if False else NONSOURCE)
# Condition is evaluated first, so x is SOURCE once chosen
def test_conditional_evaluation_true():
x = NONSOURCE
SINK(x if (SOURCE == (x := SOURCE)) else NONSOURCE) # Flow missing
# Condition is evaluated first, so x is SOURCE once chosen
def test_conditional_evaluation_false():
x = NONSOURCE
SINK(NONSOURCE if (NONSOURCE == (x := SOURCE)) else x) # Flow missing
# 6.14. Lambdas
def test_lambda():
def f(x): return x
def f(x):
return x
SINK(f(SOURCE))
def test_lambda_positional():
def second(a, b): return b
def second(a, b):
return b
SINK(second(NONSOURCE, SOURCE))
def test_lambda_positional_negative():
def second(a, b): return b
def second(a, b):
return b
SINK_F(second(SOURCE, NONSOURCE))
def test_lambda_keyword():
def second(a, b): return b
def second(a, b):
return b
SINK(second(NONSOURCE, b=SOURCE)) # Flow missing
def test_lambda_unpack_iterable():
def second(a, b): return b
def second(a, b):
return b
SINK(second(NONSOURCE, *[SOURCE])) # Flow missing
def test_lambda_unpack_mapping():
def second(a, b): return b
def second(a, b):
return b
SINK(second(NONSOURCE, **{"b": SOURCE})) # Flow missing
@@ -491,9 +490,8 @@ def test_lambda_extra_keyword():
f_extra_keyword = lambda a, **b: b["b"]
SINK(f_extra_keyword(NONSOURCE, b=SOURCE)) # Flow missing
# call the function with our source as the name of the keyword arguemnt
def test_lambda_extra_keyword_flow():
# return the name of the first extra keyword argument
f_extra_keyword_flow = lambda **a: [*a][0]