diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2014-07-23 13:32:22 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2014-07-23 13:32:22 +0200 |
commit | c556997d7814f883a0b9571e724f33d0168b450b (patch) | |
tree | f4a261032df94e187b161fb9ed66a0cde8d4b5d8 /checkers/variables.py | |
parent | 228cf2146e6485e34e78b73570ea0a5a5ec05e75 (diff) | |
parent | aad6ec6e17654b1c202d33912dfcc55fb9288441 (diff) | |
download | pylint-c556997d7814f883a0b9571e724f33d0168b450b.tar.gz |
Merged in PCManticore/pylint/metaclass_undefined (pull request #111)
Emit 'undefined-variable' for undefined names used as metaclasses with Python 3 `metaclass=` syntax.
Diffstat (limited to 'checkers/variables.py')
-rw-r--r-- | checkers/variables.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/checkers/variables.py b/checkers/variables.py index aa63177..8f8ee87 100644 --- a/checkers/variables.py +++ b/checkers/variables.py @@ -422,8 +422,11 @@ builtins. Remember that you should avoid to define new builtins when possible.' called_overridden = False argnames = node.argnames() global_names = set() + nonlocal_names = set() for global_stmt in node.nodes_of_class(astroid.Global): global_names.update(set(global_stmt.names)) + for nonlocal_stmt in node.nodes_of_class(astroid.Nonlocal): + nonlocal_names.update(set(nonlocal_stmt.names)) for name, stmts in not_consumed.iteritems(): # ignore some special names specified by user configuration @@ -470,6 +473,9 @@ builtins. Remember that you should avoid to define new builtins when possible.' continue self.add_message('unused-argument', args=name, node=stmt) else: + if stmt.parent and isinstance(stmt.parent, astroid.Assign): + if name in nonlocal_names: + continue self.add_message('unused-variable', args=name, node=stmt) @check_messages('global-variable-undefined', 'global-variable-not-assigned', 'global-statement', |