File tree Expand file tree Collapse file tree 2 files changed +21
-3
lines changed Expand file tree Collapse file tree 2 files changed +21
-3
lines changed Original file line number Diff line number Diff line change @@ -55,13 +55,17 @@ def extract_refexpr_names(expr: RefExpr) -> Set[str]:
55
55
while expr .kind == MODULE_REF or expr .fullname is not None :
56
56
if expr .kind == MODULE_REF :
57
57
output .add (expr .fullname )
58
- elif expr .fullname is not None and '.' in expr .fullname :
59
- if not (isinstance (expr .node , Var ) and expr .node .is_import ):
60
- output .add (expr .fullname .rsplit ('.' , 1 )[0 ])
61
58
62
59
if isinstance (expr , NameExpr ):
60
+ is_silenced_import = isinstance (expr .node , Var ) and expr .node .is_import
63
61
if expr .info is not None :
62
+ # Reference to regular type
64
63
output .update (split_module_names (expr .info .module_name ))
64
+ elif isinstance (expr .node , TypeInfo ):
65
+ # Nested class
66
+ output .update (split_module_names (expr .node .module_name ))
67
+ elif expr .fullname is not None and '.' in expr .fullname and not is_silenced_import :
68
+ output .add (expr .fullname .rsplit ('.' , 1 )[0 ])
65
69
break
66
70
elif isinstance (expr , MemberExpr ):
67
71
if isinstance (expr .expr , RefExpr ):
Original file line number Diff line number Diff line change @@ -1178,3 +1178,17 @@ def test() -> str: return "foo"
1178
1178
[stale foo, unrelated]
1179
1179
[out]
1180
1180
tmp/main.py:3: error: Revealed type is 'builtins.str'
1181
+
1182
+ [case testIncrementalWorksWithNestedClasses]
1183
+ import foo
1184
+
1185
+ [file foo.py]
1186
+ class MyClass:
1187
+ class NestedClass:
1188
+ pass
1189
+
1190
+ class_attr = NestedClass()
1191
+
1192
+ [rechecked]
1193
+ [stale]
1194
+ [out]
You can’t perform that action at this time.
0 commit comments