Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions pyflakes/checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -1008,8 +1008,12 @@ def addBinding(self, node, value):
for scope in reversed(self.scopeStack)
if not isinstance(scope, GeneratorScope)
)
# it may be a re-assignment to an already existing name
scope.setdefault(value.name, value)
if value.name in scope and isinstance(scope[value.name], Annotation):
# re-assignment to name that was previously only an annotation
scope[value.name] = value
else:
# it may be a re-assignment to an already existing name
scope.setdefault(value.name, value)
else:
self.scope[value.name] = value

Expand Down
7 changes: 7 additions & 0 deletions pyflakes/test/test_other.py
Original file line number Diff line number Diff line change
Expand Up @@ -1744,6 +1744,13 @@ def test_assign_expr(self):
print(x)
''')

def test_assign_expr_after_annotation(self):
self.flakes("""
a: int
print(a := 3)
print(a)
""")

def test_assign_expr_generator_scope(self):
"""Test assignment expressions in generator expressions."""
self.flakes('''
Expand Down