Skip to content

Commit 37f203e

Browse files
authored
fold unused checks into final scope checking (#750)
1 parent 3c70084 commit 37f203e

File tree

1 file changed

+7
-30
lines changed

1 file changed

+7
-30
lines changed

pyflakes/checker.py

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,6 @@ def __init__(self, tree, filename='(none)', builtins=None,
769769
withDoctest='PYFLAKES_DOCTEST' in os.environ, file_tokens=()):
770770
self._nodeHandlers = {}
771771
self._deferredFunctions = []
772-
self._deferredAssignments = []
773772
self.deadScopes = []
774773
self.messages = []
775774
self.filename = filename
@@ -790,11 +789,8 @@ def __init__(self, tree, filename='(none)', builtins=None,
790789
# Set _deferredFunctions to None so that deferFunction will fail
791790
# noisily if called after we've run through the deferred functions.
792791
self._deferredFunctions = None
793-
self.runDeferred(self._deferredAssignments)
794-
# Set _deferredAssignments to None so that deferAssignment will fail
795-
# noisily if called after we've run through the deferred assignments.
796-
self._deferredAssignments = None
797792
del self.scopeStack[1:]
793+
798794
self.popScope()
799795
self.checkDeadScopes()
800796

@@ -815,13 +811,6 @@ def deferFunction(self, callable):
815811
"""
816812
self._deferredFunctions.append((callable, self.scopeStack[:], self.offset))
817813

818-
def deferAssignment(self, callable):
819-
"""
820-
Schedule an assignment handler to be called just after deferred
821-
function handlers.
822-
"""
823-
self._deferredAssignments.append((callable, self.scopeStack[:], self.offset))
824-
825814
def runDeferred(self, deferred):
826815
"""
827816
Run the callables in C{deferred} using their associated scope stack.
@@ -879,6 +868,12 @@ def checkDeadScopes(self):
879868
if isinstance(scope, ClassScope):
880869
continue
881870

871+
if isinstance(scope, FunctionScope):
872+
for name, binding in scope.unused_assignments():
873+
self.report(messages.UnusedVariable, binding.source, name)
874+
for name, binding in scope.unused_annotations():
875+
self.report(messages.UnusedAnnotation, binding.source, name)
876+
882877
all_binding = scope.get('__all__')
883878
if all_binding and not isinstance(all_binding, ExportBinding):
884879
all_binding = None
@@ -1991,28 +1986,10 @@ def LAMBDA(self, node):
19911986
self.handleNode(default, node)
19921987

19931988
def runFunction():
1994-
19951989
self.pushScope()
19961990

19971991
self.handleChildren(node, omit=['decorator_list', 'returns'])
19981992

1999-
def check_unused_assignments():
2000-
"""
2001-
Check to see if any assignments have not been used.
2002-
"""
2003-
for name, binding in self.scope.unused_assignments():
2004-
self.report(messages.UnusedVariable, binding.source, name)
2005-
2006-
def check_unused_annotations():
2007-
"""
2008-
Check to see if any annotations have not been used.
2009-
"""
2010-
for name, binding in self.scope.unused_annotations():
2011-
self.report(messages.UnusedAnnotation, binding.source, name)
2012-
2013-
self.deferAssignment(check_unused_assignments)
2014-
self.deferAssignment(check_unused_annotations)
2015-
20161993
self.popScope()
20171994

20181995
self.deferFunction(runFunction)

0 commit comments

Comments
 (0)