diff --git a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java index 88b677cc2d69..166aed72962f 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java @@ -32,7 +32,8 @@ import java.util.Map; public interface PyClassStub extends NamedStub { /** - * @return a {@code Map} which contains imported class names as keys and their original names as values + * @return a {@code Map} which contains imported class names as keys and their original names as values. + * Note: the returned {@code Map} could contain nulls as keys and as values. */ @NotNull Map getSuperClasses(); diff --git a/python/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java b/python/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java index 335a2f2fdf6b..ec76beef54c4 100644 --- a/python/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java @@ -525,7 +525,7 @@ public class PyTypingTypeProvider extends PyTypeProviderBase { if (pyClass != null && scopeOwner instanceof PyFunction) { final PyResolveContext resolveContext = PyResolveContext.noImplicits().withTypeEvalContext(context); - boolean isInstanceAttribute = false; + boolean isInstanceAttribute; if (context.maySwitchToAST(target)) { isInstanceAttribute = StreamEx.of(PyUtil.multiResolveTopPriority(target.getQualifier(), resolveContext)) .select(PyParameter.class) @@ -709,6 +709,7 @@ public class PyTypingTypeProvider extends PyTypeProviderBase { } } for (QualifiedName qName : allBaseClassesQNames) { + if (qName == null) continue; final List classes = PyResolveUtil.resolveQualifiedNameInScope(qName, (PyFile)pyClass.getContainingFile(), context); // Better way to handle results of the multiresove final PyClass firstFound = ContainerUtil.findInstance(classes, PyClass.class);