summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyflakes/checker.py5
-rw-r--r--pyflakes/test/test_other.py19
2 files changed, 22 insertions, 2 deletions
diff --git a/pyflakes/checker.py b/pyflakes/checker.py
index a070822..baef833 100644
--- a/pyflakes/checker.py
+++ b/pyflakes/checker.py
@@ -679,8 +679,9 @@ class Checker(object):
self.report(messages.RedefinedInListComp,
node, value.name, existing.source)
elif not existing.used and value.redefines(existing):
- self.report(messages.RedefinedWhileUnused,
- node, value.name, existing.source)
+ if value.name != '_' or isinstance(existing, Importation):
+ self.report(messages.RedefinedWhileUnused,
+ node, value.name, existing.source)
elif isinstance(existing, Importation) and value.redefines(existing):
existing.redefined.append(node)
diff --git a/pyflakes/test/test_other.py b/pyflakes/test/test_other.py
index 14f213c..5bae7a0 100644
--- a/pyflakes/test/test_other.py
+++ b/pyflakes/test/test_other.py
@@ -151,6 +151,25 @@ class Test(TestCase):
def a(): pass
''', m.RedefinedWhileUnused)
+ def test_redefinedUnderscoreFunction(self):
+ """
+ Test that shadowing a function definition named with underscore doesn't
+ raise anything.
+ """
+ self.flakes('''
+ def _(): pass
+ def _(): pass
+ ''')
+
+ def test_redefinedUnderscoreImportation(self):
+ """
+ Test that shadowing an underscore importation raises a warning.
+ """
+ self.flakes('''
+ from .i18n import _
+ def _(): pass
+ ''', m.RedefinedWhileUnused)
+
def test_redefinedClassFunction(self):
"""
Test that shadowing a function definition in a class suite with another