diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt index 6884269765b..4eadb1ca9d8 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt @@ -149,13 +149,9 @@ internal fun KtAnalysisSession.getTypeNullability(ktType: KtType): NullabilityTy if (ktType.isUnit) return NullabilityType.NotNull if (ktType is KtTypeParameterType) { -// TODO Make supertype checking -// val subtypeOfNullableSuperType = context.firRef.withFir(phase) { -// it.session.typeCheckerContext.nullableAnyType().isSupertypeOf(it.session.typeCheckerContext, coneType) -// } -// if (!subtypeOfNullableSuperType) return NullabilityType.NotNull - - return if (!ktType.isMarkedNullable) NullabilityType.Unknown else NullabilityType.NotNull + if (ktType.isMarkedNullable) return NullabilityType.Nullable + val subtypeOfNullableSuperType = ktType.symbol.upperBounds.all { upperBound -> upperBound.canBeNull } + return if (!subtypeOfNullableSuperType) NullabilityType.NotNull else NullabilityType.Unknown } if (ktType !is KtClassType) return NullabilityType.NotNull diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/Generic.fir.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/Generic.fir.java deleted file mode 100644 index 256deed98e7..00000000000 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/Generic.fir.java +++ /dev/null @@ -1,12 +0,0 @@ -public abstract interface Generic /* Generic*/ { - @org.jetbrains.annotations.Nullable() - public abstract N a1(@org.jetbrains.annotations.Nullable() N);// a1(N) - - @org.jetbrains.annotations.Nullable() - public abstract NN b1(@org.jetbrains.annotations.Nullable() NN);// b1(NN) - - public abstract N a(N);// a(N) - - public abstract NN b(NN);// b(NN) - -}