diff --git a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/controlflow/PyTypeAssertionEvaluator.java b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/controlflow/PyTypeAssertionEvaluator.java index e0aeae237934..5428520403eb 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/controlflow/PyTypeAssertionEvaluator.java +++ b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/controlflow/PyTypeAssertionEvaluator.java @@ -50,12 +50,6 @@ public class PyTypeAssertionEvaluator extends PyRecursiveElementVisitor { transformTypeFromAssertion(context.getType(typeElement), false, context, typeElement)); } } - else if (node.isCalleeText(PyNames.CALLABLE_BUILTIN)) { - final PyExpression[] args = node.getArguments(); - if (args.length == 1) { - pushAssertion(args[0], myPositive, context -> PyTypingTypeProvider.createTypingCallableType(node)); - } - } else if (node.isCalleeText(PyNames.ISSUBCLASS)) { final PyExpression[] args = node.getArguments(); if (args.length == 2) { diff --git a/python/testSrc/com/jetbrains/python/Py3TypeTest.java b/python/testSrc/com/jetbrains/python/Py3TypeTest.java index f69c574285ee..bfe87aee2b7c 100644 --- a/python/testSrc/com/jetbrains/python/Py3TypeTest.java +++ b/python/testSrc/com/jetbrains/python/Py3TypeTest.java @@ -4161,6 +4161,15 @@ public class Py3TypeTest extends PyTestCase { """); } + @TestFor(issues="PY-84524") + public void testBuiltinsCallable() { + doTest("(...) -> object", """ + a = object() + if callable(a): + expr = a + """); + } + private void doTest(final String expectedType, final String text) { myFixture.configureByText(PythonFileType.INSTANCE, text); final PyExpression expr = myFixture.findElementByText("expr", PyExpression.class); diff --git a/python/testSrc/com/jetbrains/python/PyTypingTest.java b/python/testSrc/com/jetbrains/python/PyTypingTest.java index 8688ab4e44df..c22891e240dc 100644 --- a/python/testSrc/com/jetbrains/python/PyTypingTest.java +++ b/python/testSrc/com/jetbrains/python/PyTypingTest.java @@ -1980,7 +1980,9 @@ public class PyTypingTest extends PyTestCase { // PY-79861 public void testWalrusCallable() { - doTest("type[Callable]", + // should actually be `(...) -> object` ... should actually be `Literal[42] & (...) -> object ... should actually be `Never` + // but we don't support this case yet + doTest("int", """ if callable(a := 42): expr = a""");