diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt index d24c64d1e60..a9a0f3983f1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt @@ -17,7 +17,7 @@ fun ConeClassifierLookupTag.toSymbol(useSiteSession: FirSession): FirClassifierS when (this) { is ConeClassLikeLookupTag -> toSymbol(useSiteSession) is ConeClassifierLookupTagWithFixedSymbol -> this.symbol - else -> error("Unknown lookupTag type: ${this::class}") + else -> null } @OptIn(LookupTagInternals::class) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index 4740a124e62..a469cf9b84c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -394,17 +394,24 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty if (this.isMarkedNullable) return true - if (this is ConeFlexibleType && this.upperBound.isNullableType()) - return true - - if (this is ConeTypeParameterType /* || is TypeVariable */) - return hasNullableSuperType(type) - - if (this is ConeIntersectionType && intersectedTypes.any { it.isNullableType() }) { - return true + return when (this) { + is ConeFlexibleType -> this.upperBound.isNullableType() + is ConeTypeParameterType -> lookupTag.symbol.allBoundsAreNullable() + is ConeTypeVariableType -> { + val symbol = lookupTag.toSymbol(session) ?: return false + when (symbol) { + is FirClassSymbol -> false + is FirTypeAliasSymbol -> symbol.fir.expandedConeType?.isNullableType() ?: false + is FirTypeParameterSymbol -> symbol.allBoundsAreNullable() + } + } + is ConeIntersectionType -> intersectedTypes.all { it.isNullableType() } + else -> false } + } - return false + private fun FirTypeParameterSymbol.allBoundsAreNullable(): Boolean { + return fir.bounds.all { it.coneType.isMarkedNullable } } private fun TypeConstructorMarker.toFirRegularClass(): FirRegularClass? { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt index 5a562dbe10b..2dba1ad70c4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt @@ -93,22 +93,6 @@ fun T.withAttributes(attributes: ConeAttributes): T { } as T } -fun ConeTypeContext.hasNullableSuperType(type: ConeKotlinType): Boolean { - if (type is ConeClassLikeType) return false - - if (type !is ConeLookupTagBasedType) return false // TODO? - val symbol = type.lookupTag - for (superType in symbol.supertypes()) { - if (superType.isNullableType()) return true - } -// -// for (KotlinType supertype : getImmediateSupertypes(type)) { -// if (isNullableType(supertype)) return true; -// } - - return false -} - fun T.withNullability( nullability: ConeNullability, typeContext: ConeInferenceContext? = null, diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/12.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/12.fir.kt index cb71cdfb613..cc3ba8d4e52 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/12.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/12.fir.kt @@ -2861,7 +2861,7 @@ fun T?.case_47() where T : Inv, T: Comparable<*>?, T: InterfaceWithTypePa get() ip1test1() apply { - this + this equals(null) propT propAny @@ -2873,31 +2873,31 @@ fun T?.case_47() where T : Inv, T: Comparable<*>?, T: InterfaceWithTypePa funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } this.compareTo(return) @@ -2905,11 +2905,11 @@ fun T?.case_47() where T : Inv, T: Comparable<*>?, T: InterfaceWithTypePa apply { compareTo(return) - this.compareTo(return) + this.compareTo(return) } also { - it.compareTo(return) + it.compareTo(return) } } } @@ -2938,7 +2938,7 @@ fun T?.case_48() where T : Inv, T: InterfaceWithTypeParameter1? get() ip1test1() apply { - this + this equals(null) propT propAny @@ -2950,31 +2950,31 @@ fun T?.case_48() where T : Inv, T: InterfaceWithTypeParameter1? funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } @@ -3003,7 +3003,7 @@ fun T?.case_49() where T : Inv, T: InterfaceWithTypeParameter1? get() ip1test1() apply { - this + this equals(null) propT propAny @@ -3015,31 +3015,31 @@ fun T?.case_49() where T : Inv, T: InterfaceWithTypeParameter1? funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } @@ -3068,7 +3068,7 @@ fun T?.case_50() where T : Inv, T: InterfaceWithTypeParameter1 get() ip1test1() apply { - this + this equals(null) propT propAny @@ -3080,31 +3080,31 @@ fun T?.case_50() where T : Inv, T: InterfaceWithTypeParameter1 funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } @@ -3133,7 +3133,7 @@ fun T?.case_51() where T : Inv, T: InterfaceWithTypeParameter1? { get() ip1test1() apply { - this + this equals(null) propT propAny @@ -3145,31 +3145,31 @@ fun T?.case_51() where T : Inv, T: InterfaceWithTypeParameter1? { funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } @@ -3194,7 +3194,7 @@ fun T?.case_52() where T : Inv, T: InterfaceWithTypeParameter1? { get() ip1test1() apply { - this + this equals(null) propT propAny @@ -3206,31 +3206,31 @@ fun T?.case_52() where T : Inv, T: InterfaceWithTypeParameter1? { funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } @@ -3259,7 +3259,7 @@ fun T?.case_53() where T : Inv, T: InterfaceWithTypeParameter1<*>? { get() ip1test1() apply { - this + this equals(null) propT propAny @@ -3271,31 +3271,31 @@ fun T?.case_53() where T : Inv, T: InterfaceWithTypeParameter1<*>? { funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } @@ -3324,7 +3324,7 @@ fun T?.case_54() where T : Inv<*>, T: InterfaceWithTypeParameter1? { get() ip1test1() apply { - this + this equals(null) propT propAny @@ -3336,31 +3336,31 @@ fun T?.case_54() where T : Inv<*>, T: InterfaceWithTypeParameter1? { funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } @@ -3385,7 +3385,7 @@ fun T?.case_55() where T : Inv<*>, T: InterfaceWithTypeParameter1? { get() ip1test1() apply { - this + this equals(null) propT propAny @@ -3397,31 +3397,31 @@ fun T?.case_55() where T : Inv<*>, T: InterfaceWithTypeParameter1? { funNullableAny() get() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.get() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.get() + this.ip1test1() } also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.get() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.get() + it.ip1test1() } } } diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/13.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/13.fir.kt index a9b32599c67..f03092b521a 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/13.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/pos/13.fir.kt @@ -3216,7 +3216,7 @@ fun case_47(x: T?) where T : Inv, T: Comparable<*>?, T: InterfaceWithType x.test() x.ip1test1() x.apply { - this + this equals(null) propT propAny @@ -3228,31 +3228,31 @@ fun case_47(x: T?) where T : Inv, T: Comparable<*>?, T: InterfaceWithType funNullableAny() test() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } x.compareTo(return) @@ -3260,11 +3260,11 @@ fun case_47(x: T?) where T : Inv, T: Comparable<*>?, T: InterfaceWithType x.apply { compareTo(return) - this.compareTo(return) + this.compareTo(return) } x.also { - it.compareTo(return) + it.compareTo(return) } } } @@ -3308,7 +3308,7 @@ fun case_48(x: T?) where T : Inv, T: InterfaceWithTypeParameter1this + this equals(null) propT propAny @@ -3320,31 +3320,31 @@ fun case_48(x: T?) where T : Inv, T: InterfaceWithTypeParameter1this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } } @@ -3388,7 +3388,7 @@ fun case_49(x: T?) where T : Inv, T: InterfaceWithTypeParameter1 x.test() x.ip1test1() x.apply { - this + this equals(null) propT propAny @@ -3400,31 +3400,31 @@ fun case_49(x: T?) where T : Inv, T: InterfaceWithTypeParameter1 funNullableAny() test() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } } @@ -3468,7 +3468,7 @@ fun case_50(x: T?) where T : Inv, T: InterfaceWithTypeParameter1this + this equals(null) propT propAny @@ -3480,31 +3480,31 @@ fun case_50(x: T?) where T : Inv, T: InterfaceWithTypeParameter1this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } } @@ -3548,7 +3548,7 @@ fun case_51(x: T?) where T : Inv, T: InterfaceWithTypeParameter1? x.test() x.ip1test1() x.apply { - this + this equals(null) propT propAny @@ -3560,31 +3560,31 @@ fun case_51(x: T?) where T : Inv, T: InterfaceWithTypeParameter1? funNullableAny() test() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } } @@ -3625,7 +3625,7 @@ fun case_52(x: T?) where T : Inv, T: InterfaceWithTypeParameter1? { x.test() x.ip1test1() x.apply { - this + this equals(null) propT propAny @@ -3637,31 +3637,31 @@ fun case_52(x: T?) where T : Inv, T: InterfaceWithTypeParameter1? { funNullableAny() test() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } } @@ -3705,7 +3705,7 @@ fun case_53(x: T?) where T : Inv, T: InterfaceWithTypeParameter1<*>? { x.test() x.ip1test1() x.apply { - this + this equals(null) propT propAny @@ -3717,31 +3717,31 @@ fun case_53(x: T?) where T : Inv, T: InterfaceWithTypeParameter1<*>? { funNullableAny() test() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } } @@ -3785,7 +3785,7 @@ fun case_54(x: T?) where T : Inv<*>, T: InterfaceWithTypeParameter1? x.test() x.ip1test1() x.apply { - this + this equals(null) propT propAny @@ -3797,31 +3797,31 @@ fun case_54(x: T?) where T : Inv<*>, T: InterfaceWithTypeParameter1? funNullableAny() test() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } } @@ -3862,7 +3862,7 @@ fun case_55(x: T?) where T : Inv<*>, T: InterfaceWithTypeParameter1? { x.test() x.ip1test1() x.apply { - this + this equals(null) propT propAny @@ -3874,31 +3874,31 @@ fun case_55(x: T?) where T : Inv<*>, T: InterfaceWithTypeParameter1? { funNullableAny() test() ip1test1() - this.equals(null) - this.propT - this.propAny - this.propNullableT - this.propNullableAny - this.funT() - this.funAny() - this.funNullableT() - this.funNullableAny() - this.test() - this.ip1test1() + this.equals(null) + this.propT + this.propAny + this.propNullableT + this.propNullableAny + this.funT() + this.funAny() + this.funNullableT() + this.funNullableAny() + this.test() + this.ip1test1() } x.also { - it - it.equals(null) - it.propT - it.propAny - it.propNullableT - it.propNullableAny - it.funT() - it.funAny() - it.funNullableT() - it.funNullableAny() - it.test() - it.ip1test1() + it + it.equals(null) + it.propT + it.propAny + it.propNullableT + it.propNullableAny + it.funT() + it.funAny() + it.funNullableT() + it.funNullableAny() + it.test() + it.ip1test1() } } }