File tree Expand file tree Collapse file tree 4 files changed +16
-7
lines changed
tests/functional/u/undefined Expand file tree Collapse file tree 4 files changed +16
-7
lines changed Original file line number Diff line number Diff line change
1
+ Fixed a crash when the lineno of a variable used as an annotation wasn't available for ``undefined-variable``.
2
+
3
+ Closes #8866
Original file line number Diff line number Diff line change @@ -2295,13 +2295,14 @@ def _is_variable_violation(
2295
2295
# using a name defined earlier in the class containing the function.
2296
2296
if node is frame .returns and defframe .parent_of (frame .returns ):
2297
2297
annotation_return = True
2298
- if (
2299
- frame .returns .name in defframe .locals
2300
- and defframe .locals [node .name ][0 ].lineno < frame .lineno
2301
- ):
2302
- # Detect class assignments with a name defined earlier in the
2303
- # class. In this case, no warning should be raised.
2304
- maybe_before_assign = False
2298
+ if frame .returns .name in defframe .locals :
2299
+ definition = defframe .locals [node .name ][0 ]
2300
+ if definition .lineno is None or definition .lineno < frame .lineno :
2301
+ # Detect class assignments with a name defined earlier in the
2302
+ # class. In this case, no warning should be raised.
2303
+ maybe_before_assign = False
2304
+ else :
2305
+ maybe_before_assign = True
2305
2306
else :
2306
2307
maybe_before_assign = True
2307
2308
if isinstance (node .parent , nodes .Arguments ):
Original file line number Diff line number Diff line change @@ -380,3 +380,7 @@ def y(self) -> RepeatedReturnAnnotations: # [undefined-variable]
380
380
pass
381
381
def z (self ) -> RepeatedReturnAnnotations : # [undefined-variable]
382
382
pass
383
+
384
+ class A :
385
+ def say_hello (self ) -> __module__ : # [undefined-variable]
386
+ ...
Original file line number Diff line number Diff line change @@ -37,3 +37,4 @@ undefined-variable:365:10:365:20:global_var_mixed_assignment:Undefined variable
37
37
undefined-variable:377:19:377:44:RepeatedReturnAnnotations.x:Undefined variable 'RepeatedReturnAnnotations':UNDEFINED
38
38
undefined-variable:379:19:379:44:RepeatedReturnAnnotations.y:Undefined variable 'RepeatedReturnAnnotations':UNDEFINED
39
39
undefined-variable:381:19:381:44:RepeatedReturnAnnotations.z:Undefined variable 'RepeatedReturnAnnotations':UNDEFINED
40
+ undefined-variable:385:27:385:37:A.say_hello:Undefined variable '__module__':UNDEFINED
You can’t perform that action at this time.
0 commit comments