diff --git a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JavaCollectionWithNullableTypeArgumentInspection.kt b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JavaCollectionWithNullableTypeArgumentInspection.kt index 0eb531f86191..2f8a63a89cad 100644 --- a/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JavaCollectionWithNullableTypeArgumentInspection.kt +++ b/plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/JavaCollectionWithNullableTypeArgumentInspection.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.unwrapNullability import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment import org.jetbrains.kotlin.utils.exceptions.withPsiEntry @@ -195,10 +196,9 @@ internal class JavaCollectionWithNullableTypeArgumentInspection : } private fun KtTypeProjection.removeQuestionMark() { - val initialNullableType = this.typeReference?.typeElement as? KtNullableType ?: return - val deepestNullableType = getDeepestNullableType(initialNullableType) - val innerType = deepestNullableType.innerType ?: return - innerType.let { initialNullableType.replace(innerType) } + val typeElement = this.typeReference?.typeElement + val unwrappedTypeElement = typeElement?.unwrapNullability() ?: return + typeElement.replace(unwrappedTypeElement) } private fun KtTypeProjection.makeDefinitelyNonNullable() { @@ -300,11 +300,7 @@ private fun KtElement.getTypeArguments(): List? { return when (this) { is KtTypeReference -> { val typeElement = this.typeElement - val userType = if (typeElement is KtNullableType) { - getDeepestNullableType(typeElement).innerType - } else { - typeElement - } as? KtUserType + val userType = typeElement?.unwrapNullability() as? KtUserType userType?.typeArguments.orEmpty() } @@ -315,7 +311,3 @@ private fun KtElement.getTypeArguments(): List? { else -> null } } - -private fun getDeepestNullableType(initialNullableType: KtNullableType): KtNullableType { - return generateSequence(initialNullableType) { it.innerType as? KtNullableType }.last() -} \ No newline at end of file