diff options
author | Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> | 2021-12-17 23:57:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-17 23:57:45 +0100 |
commit | ddd2123e09f97ef91d5745e9790d6f24a5493156 (patch) | |
tree | 53da984b9429458c7540569ea490e46ab69c9fa9 | |
parent | fd18848e4491fe67b79537a79725655c81fe26ef (diff) | |
download | pylint-git-ddd2123e09f97ef91d5745e9790d6f24a5493156.tar.gz |
Fix crash on uninferable decorators on Python 3.6 and 3.7 (#5549)
Co-authored-by: Mark Byrne <31762852+mbyrnepr2@users.noreply.github.com>
-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 |