diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | doc/whatsnew/2.13.rst | 2 | ||||
-rw-r--r-- | pylint/checkers/utils.py | 6 | ||||
-rw-r--r-- | tests/functional/o/overridden_final_method_regression.py | 6 | ||||
-rw-r--r-- | tests/functional/o/overridden_final_method_regression.txt | 1 |
5 files changed, 16 insertions, 1 deletions
@@ -79,6 +79,8 @@ Release date: TBA Closes #5323 +* Fixed crash on uninferable decorators on Python 3.6 and 3.7 + * Add checker ``unnecessary-ellipsis``: Emitted when the ellipsis constant is used unnecessarily. Closes #5460 diff --git a/doc/whatsnew/2.13.rst b/doc/whatsnew/2.13.rst index ef72d5855..8f71a4b12 100644 --- a/doc/whatsnew/2.13.rst +++ b/doc/whatsnew/2.13.rst @@ -73,6 +73,8 @@ Other Changes Closes #5065 +* Fixed crash on uninferable decorators on Python 3.6 and 3.7 + * Fatal errors now emit a score of 0.0 regardless of whether the linted module contained any statements diff --git a/pylint/checkers/utils.py b/pylint/checkers/utils.py index 1f85399a7..cb04c2119 100644 --- a/pylint/checkers/utils.py +++ b/pylint/checkers/utils.py @@ -876,7 +876,11 @@ def uninferable_final_decorators( except AttributeError: continue elif isinstance(decorator, nodes.Name): - import_node = decorator.lookup(decorator.name)[1][0] + lookup_values = decorator.lookup(decorator.name) + if lookup_values[1]: + import_node = lookup_values[1][0] + else: + continue # pragma: no cover # Covered on Python < 3.8 else: continue diff --git a/tests/functional/o/overridden_final_method_regression.py b/tests/functional/o/overridden_final_method_regression.py new file mode 100644 index 000000000..a1f72b380 --- /dev/null +++ b/tests/functional/o/overridden_final_method_regression.py @@ -0,0 +1,6 @@ +"""Test a crash regression for the overridden-final-method checker on uninferable decorators""" + + +@unknown_decorator # [undefined-variable] +def crash_test(): + """A docstring""" diff --git a/tests/functional/o/overridden_final_method_regression.txt b/tests/functional/o/overridden_final_method_regression.txt new file mode 100644 index 000000000..a8cb23954 --- /dev/null +++ b/tests/functional/o/overridden_final_method_regression.txt @@ -0,0 +1 @@ +undefined-variable:4:1:4:18:crash_test:Undefined variable 'unknown_decorator':UNDEFINED |