diff --git a/doc/whatsnew/fragments/10708.bugfix b/doc/whatsnew/fragments/10708.bugfix new file mode 100644 index 0000000000..2a9b1a3793 --- /dev/null +++ b/doc/whatsnew/fragments/10708.bugfix @@ -0,0 +1,4 @@ +Fix crash for ``prefer-typing-namedtuple`` and ``consider-math-not-float`` when +a ``slice`` object is called. + +Closes #10708 diff --git a/pylint/extensions/code_style.py b/pylint/extensions/code_style.py index d8ea869cb9..0eff5f4786 100644 --- a/pylint/extensions/code_style.py +++ b/pylint/extensions/code_style.py @@ -113,7 +113,7 @@ def open(self) -> None: def visit_call(self, node: nodes.Call) -> None: if self._py36_plus: called = safe_infer(node.func) - if not called: + if not (called and isinstance(called, (nodes.FunctionDef, nodes.ClassDef))): return if called.qname() == "collections.namedtuple": self.add_message( diff --git a/tests/functional/ext/code_style/cs_prefer_typing_namedtuple.py b/tests/functional/ext/code_style/cs_prefer_typing_namedtuple.py index 7b0e7c58de..18ca3138f8 100644 --- a/tests/functional/ext/code_style/cs_prefer_typing_namedtuple.py +++ b/tests/functional/ext/code_style/cs_prefer_typing_namedtuple.py @@ -7,3 +7,8 @@ class SearchMatch( namedtuple('SearchMatch', ['els', 'index', 'iterator']) # [prefer-typing-namedtuple] ): """Adapted from primer package `music21`.""" + + +# Regression test for https://github.com/pylint-dev/pylint/issues/10708 +x = slice(42) +x() # pylint: disable=not-callable