diff --git a/python/python-psi-api/src/com/jetbrains/python/psi/PyWithAncestors.java b/python/python-psi-api/src/com/jetbrains/python/psi/PyWithAncestors.java index 354ec7580157..c0b4f875e149 100644 --- a/python/python-psi-api/src/com/jetbrains/python/psi/PyWithAncestors.java +++ b/python/python-psi-api/src/com/jetbrains/python/psi/PyWithAncestors.java @@ -19,6 +19,7 @@ import com.jetbrains.python.ast.PyAstWithAncestors; import com.jetbrains.python.psi.types.PyClassLikeType; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -32,5 +33,5 @@ public interface PyWithAncestors extends PyAstWithAncestors { * Returns types of all ancestors from the hierarchy. */ @NotNull - List getAncestorTypes(@NotNull TypeEvalContext context); + List<@Nullable PyClassLikeType> getAncestorTypes(@NotNull TypeEvalContext context); } diff --git a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyInvalidCastInspection.kt b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyInvalidCastInspection.kt index b4b8154abf59..d3e142300302 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyInvalidCastInspection.kt +++ b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyInvalidCastInspection.kt @@ -83,7 +83,7 @@ private fun computeSuggestedIntermediateTypeName(targetType: PyType?, actualType fun mro(t: PyClassLikeType): List { val result = ArrayList() result.add(t) - result.addAll(t.getAncestorTypes(context)) + result.addAll(t.getAncestorTypes(context).filterNotNull()) return result } diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java index bd7c348945da..488873c02174 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java @@ -378,7 +378,7 @@ public class PyClassTypeImpl extends UserDataHolderBase implements PyClassType { } @Override - public @NotNull List getAncestorTypes(final @NotNull TypeEvalContext context) { + public @NotNull List<@Nullable PyClassLikeType> getAncestorTypes(final @NotNull TypeEvalContext context) { return myClass.getAncestorTypes(context); } @@ -746,7 +746,7 @@ public class PyClassTypeImpl extends UserDataHolderBase implements PyClassType { } } - private @NotNull StreamEx prepareTypesForProcessingMembers(@NotNull List types) { + private @NotNull StreamEx prepareTypesForProcessingMembers(@NotNull List<@Nullable PyClassLikeType> types) { return StreamEx.of(types).nonNull().map(type -> isDefinition() ? type.toClass() : type.toInstance()); } diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypingNewType.kt b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypingNewType.kt index 5802ea77c508..9ec4d735ea8b 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypingNewType.kt +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypingNewType.kt @@ -77,7 +77,7 @@ class PyTypingNewType(private val classType: PyClassType, } } - override fun getAncestorTypes(context: TypeEvalContext): List { + override fun getAncestorTypes(context: TypeEvalContext): List { return listOf(classType) + classType.getAncestorTypes(context) }