Skip to content

Commit 27e2307

Browse files
committed
Python: Add import regression for refined variable
1 parent 35a53fa commit 27e2307

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

python/ql/test/experimental/import-resolution/importflow.ql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ private class SourceString extends DataFlow::Node {
1111
SourceString() {
1212
this.asExpr().(StrConst).getText() = contents and
1313
this.asExpr().getParent() instanceof Assign
14+
or
15+
this.asExpr().(ClassExpr).getInnerScope().getName() = "SOURCE" and
16+
contents = "SOURCE"
1417
}
1518

1619
string getContents() { result = contents }

python/ql/test/experimental/import-resolution/main.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ def local_import():
9393
from if_then_else import if_then_else_defined
9494
check("if_then_else_defined", if_then_else_defined, "if_defined", globals()) #$ prints=if_defined prints=else_defined_1 prints=else_defined_2
9595

96+
# check that refined definitions are handled correctly
97+
import refined # $ imports=refined as=refined
98+
check("refined.SOURCE", refined.SOURCE, refined.SOURCE, globals()) #$ MISSING: prints=SOURCE
99+
96100
exit(__file__)
97101

98102
print()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from trace import *
2+
enter(__file__)
3+
4+
class SOURCE(object): pass
5+
6+
check("SOURCE", SOURCE, SOURCE, globals()) #$ prints=SOURCE
7+
8+
SOURCE.foo = 42
9+
10+
check("SOURCE", SOURCE, SOURCE, globals()) #$ prints=SOURCE
11+
12+
exit(__file__)

0 commit comments

Comments
 (0)