summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2021-12-17 23:57:45 +0100
committerGitHub <noreply@github.com>2021-12-17 23:57:45 +0100
commitddd2123e09f97ef91d5745e9790d6f24a5493156 (patch)
tree53da984b9429458c7540569ea490e46ab69c9fa9
parentfd18848e4491fe67b79537a79725655c81fe26ef (diff)
downloadpylint-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--ChangeLog2
-rw-r--r--doc/whatsnew/2.13.rst2
-rw-r--r--pylint/checkers/utils.py6
-rw-r--r--tests/functional/o/overridden_final_method_regression.py6
-rw-r--r--tests/functional/o/overridden_final_method_regression.txt1
5 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 68ec3a782..7b312ff49 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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