diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt index 1ef3b0d5e82..48edc4da8b7 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.service import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol +import org.jetbrains.kotlin.fir.typeContext import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.load.java.JvmAnnotationNames @@ -33,6 +34,7 @@ import org.jetbrains.kotlin.load.java.structure.* import org.jetbrains.kotlin.load.java.typeEnhancement.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.types.AbstractStrictEqualityTypeChecker import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.utils.addToStdlib.safeAs @@ -65,7 +67,7 @@ private fun JavaType?.enhancePossiblyFlexible( FirResolvedTypeRefImpl( session, psi = null, - type = ConeFlexibleType(lowerResult, upperResult), + type = coneFlexibleOrSimpleType(session, lowerResult, upperResult), isMarkedNullable = false, annotations = annotations ) } @@ -81,6 +83,17 @@ private fun JavaType?.subtreeSize(): Int { return 1 + typeArguments.sumBy { it?.subtreeSize() ?: 0 } } +private fun coneFlexibleOrSimpleType( + session: FirSession, + lowerBound: ConeLookupTagBasedType, + upperBound: ConeLookupTagBasedType +): ConeKotlinType { + if (AbstractStrictEqualityTypeChecker.strictEqualTypes(session.typeContext, lowerBound, upperBound)) { + return lowerBound + } + return ConeFlexibleType(lowerBound, upperBound) +} + private val KOTLIN_COLLECTIONS = FqName("kotlin.collections") private val KOTLIN_COLLECTIONS_PREFIX_LENGTH = KOTLIN_COLLECTIONS.asString().length + 1 diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteScope.kt index 35486a61e32..86a9361cdf8 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteScope.kt @@ -33,15 +33,6 @@ class JavaClassUseSiteScope( //base symbol as key, overridden as value private val overriddenByBase = mutableMapOf() - @Suppress("UNUSED_PARAMETER") - private fun isSubtypeOf(subType: ConeKotlinType, superType: ConeKotlinType): Boolean { - // TODO: introduce normal sub-typing - return true - } - - private fun isSubtypeOf(subType: FirTypeRef, superType: FirTypeRef) = - isSubtypeOf(subType.toNotNullConeKotlinType(), superType.toNotNullConeKotlinType()) - @Suppress("UNUSED_PARAMETER") private fun isEqualTypes(a: ConeKotlinType, b: ConeKotlinType): Boolean { // TODO: introduce normal type comparison @@ -73,7 +64,6 @@ class JavaClassUseSiteScope( val member = (it as FirFunctionSymbol).fir as FirNamedFunction self.modality != Modality.FINAL && sameReceivers(member.receiverTypeRef, self.receiverTypeRef) - && isSubtypeOf(member.returnTypeRef, self.returnTypeRef) && isOverriddenFunCheck(member, self) } // TODO: two or more overrides for one fun? overriddenByBase[this] = overriding diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt new file mode 100644 index 00000000000..69318d7787e --- /dev/null +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir + +import org.jetbrains.kotlin.fir.types.ConeTypeContext + +private class SessionBasedTypeContext(override val session: FirSession) : ConeTypeContext + +val FirSession.typeContext: ConeTypeContext get() = SessionBasedTypeContext(this) \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt index 7eed7c9a948..9676e66a35c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteScope.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol +import org.jetbrains.kotlin.fir.typeContext import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeTypeContext import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef @@ -35,11 +36,7 @@ class FirClassUseSiteScope( //base symbol as key val overrides = mutableMapOf() - - val context = object : ConeTypeContext { - override val session: FirSession - get() = session - } + val context: ConeTypeContext = session.typeContext private fun isEqualTypes(a: ConeKotlinType, b: ConeKotlinType) = AbstractStrictEqualityTypeChecker.strictEqualTypes(context, a, b) diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/NonNullNever.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/NonNullNever.fir.txt index 6bba2a99591..5536372a661 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/NonNullNever.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/NonNullNever.fir.txt @@ -1,10 +1,10 @@ @R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) public abstract annotation class MyNullable : R|java/lang/annotation/Annotation| { } public open class NonNullNever : R|java/lang/Object| { - @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) public open property field(var): R|ft|? - public get(): R|ft|? - public set(value: R|ft|?): kotlin/Unit + @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) public open property field(var): R|kotlin/String|? + public get(): R|kotlin/String|? + public set(value: R|kotlin/String|?): kotlin/Unit - @R|MyNullable|() public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) x: R|ft|?, @R|MyNullable|() y: R|ft|?): R|ft|? + @R|MyNullable|() public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) x: R|kotlin/String|?, @R|MyNullable|() y: R|kotlin/CharSequence|?): R|kotlin/String|? } diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/Simple.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/Simple.fir.txt index af3b5ea1d8b..4f723766260 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/Simple.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/Simple.fir.txt @@ -1,10 +1,10 @@ public open class Simple : R|java/lang/Object| { - @R|javax/annotation/Nullable|() public open property field(var): R|ft|? - public get(): R|ft|? - public set(value: R|ft|?): kotlin/Unit + @R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|? + public get(): R|kotlin/String|? + public set(value: R|kotlin/String|?): kotlin/Unit - @R|javax/annotation/Nullable|() public open operator function foo(@R|javax/annotation/Nonnull|() x: R|ft|, @R|javax/annotation/CheckForNull|() y: R|ft|?): R|ft|? + @R|javax/annotation/Nullable|() public open operator function foo(@R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|kotlin/String|? - @R|javax/annotation/Nonnull|() public open operator function bar(): R|ft| + @R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String| } diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/Strange.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/Strange.fir.txt index b4c8bf093ee..5639f003b5a 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/Strange.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/Strange.fir.txt @@ -3,8 +3,8 @@ public open class Strange : R|java/lang/Object| { public get(): R|ft|! public set(value: R|ft|!): kotlin/Unit - @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.ALWAYS|()) x: R|ft|, @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) y: R|ft|?): R|ft|? + @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.ALWAYS|()) x: R|kotlin/String|, @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) y: R|kotlin/CharSequence|?): R|kotlin/String|? - @R|javax/annotation/Nonnull|() public open operator function bar(): R|ft| + @R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String| } diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt index 126f86d4607..b0aa4d4618c 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt @@ -1,15 +1,15 @@ @R|FieldsAreNullable|() public open class A : R|java/lang/Object| { - public open property field(var): R|ft|? - public get(): R|ft|? - public set(value: R|ft|?): kotlin/Unit + public open property field(var): R|kotlin/String|? + public get(): R|kotlin/String|? + public set(value: R|kotlin/String|?): kotlin/Unit - @R|javax/annotation/Nonnull|() public open property nonNullField(var): R|ft| - public get(): R|ft| - public set(value: R|ft|): kotlin/Unit + @R|javax/annotation/Nonnull|() public open property nonNullField(var): R|kotlin/String| + public get(): R|kotlin/String| + public set(value: R|kotlin/String|): kotlin/Unit - public open operator function foo(q: R|ft|!, @R|javax/annotation/Nonnull|() x: R|ft|, @R|javax/annotation/CheckForNull|() y: R|ft|?): R|ft|! + public open operator function foo(q: R|ft|!, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft|! - @R|javax/annotation/Nonnull|() public open operator function bar(): R|ft| + @R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String| } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/CheckForNull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class FieldsAreNullable : R|java/lang/annotation/Annotation| { diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt index 0586d7cab86..e2dc984759d 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt @@ -1,7 +1,7 @@ @R|spr/NonNullApi|() public open class A : R|java/lang/Object| { - public open operator function foo(x: R|ft|, @R|spr/Nullable|() y: R|ft|?): R|ft| + public open operator function foo(x: R|kotlin/String|, @R|spr/Nullable|() y: R|kotlin/CharSequence|?): R|kotlin/String| - @R|spr/ForceFlexibility|() public open operator function bar(x: R|ft|!, @R|javax/annotation/Nonnull|() y: R|ft|): R|ft|! + @R|spr/ForceFlexibility|() public open operator function bar(x: R|ft|!, @R|javax/annotation/Nonnull|() y: R|kotlin/CharSequence|): R|ft|! } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|spr/UnknownNullability|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class ForceFlexibility : R|java/lang/annotation/Annotation| { diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt index 386398045a6..abbf1d2e732 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt @@ -1,21 +1,21 @@ @R|spr/NonNullApi|() public open class A : R|java/lang/Object|, R|B| { - @R|spr/ForceFlexibility|() public open operator function foo(x: R|ft|): R|kotlin/Unit| + @R|spr/ForceFlexibility|() public open operator function foo(x: R|kotlin/String|): R|kotlin/Unit| - public open operator function bar(@R|spr/ForceFlexibility|() x: R|ft|): R|kotlin/Unit| + public open operator function bar(@R|spr/ForceFlexibility|() x: R|kotlin/String|): R|kotlin/Unit| - public open operator function baz(@R|spr/UnknownNullability|() x: R|ft|): R|kotlin/Unit| + public open operator function baz(@R|spr/UnknownNullability|() x: R|kotlin/String|): R|kotlin/Unit| public open operator function foobar(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.UNKNOWN|()) x: R|ft|!): R|kotlin/Unit| } public abstract interface B : R|java/lang/Object| { - public abstract operator function foo(@R|javax/annotation/Nonnull|() x: R|ft|): R|kotlin/Unit| + public abstract operator function foo(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit| - public abstract operator function bar(@R|javax/annotation/Nonnull|() x: R|ft|): R|kotlin/Unit| + public abstract operator function bar(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit| - public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|ft|): R|kotlin/Unit| + public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit| - public abstract operator function foobar(@R|javax/annotation/Nonnull|() x: R|ft|): R|kotlin/Unit| + public abstract operator function foobar(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit| } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|spr/UnknownNullability|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class ForceFlexibility : R|java/lang/annotation/Annotation| { diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt index 0208d8f98f8..efd4d137b20 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt @@ -1,51 +1,51 @@ @R|NonNullApi|() public open class A : R|java/lang/Object| { - public open operator function foo1(x: R|ft|): R|ft| + public open operator function foo1(x: R|kotlin/String|): R|kotlin/String| - public open operator function foo2(x: R|ft|): R|ft| + public open operator function foo2(x: R|kotlin/String|): R|kotlin/String| - public open operator function foo3(x: R|ft|): R|ft| + public open operator function foo3(x: R|kotlin/String|): R|kotlin/String| - @R|javax/annotation/Nullable|() public open operator function bar1(@R|javax/annotation/Nullable|() x: R|ft|?): R|ft|? + @R|javax/annotation/Nullable|() public open operator function bar1(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/String|? - @R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|ft|?): R|ft|? + @R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/String|? - public open operator function baz(@R|javax/annotation/Nonnull|() x: R|ft|): R|ft| + public open operator function baz(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/String| } @R|NonNullApi|() public abstract interface AInt : R|java/lang/Object| { - public abstract operator function foo1(x: R|ft|): R|ft| + public abstract operator function foo1(x: R|kotlin/String|): R|kotlin/CharSequence| - public abstract operator function foo2(x: R|ft|): R|ft| + public abstract operator function foo2(x: R|kotlin/String|): R|kotlin/CharSequence| - public abstract operator function foo3(x: R|ft|): R|ft| + public abstract operator function foo3(x: R|kotlin/String|): R|kotlin/CharSequence| - @R|javax/annotation/Nullable|() public abstract operator function bar1(@R|javax/annotation/Nullable|() x: R|ft|?): R|ft|? + @R|javax/annotation/Nullable|() public abstract operator function bar1(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/CharSequence|? - @R|javax/annotation/Nullable|() public abstract operator function bar2(@R|javax/annotation/Nullable|() x: R|ft|?): R|ft|? + @R|javax/annotation/Nullable|() public abstract operator function bar2(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/CharSequence|? - public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|ft|): R|ft| + public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/CharSequence| } @R|NullableApi|() public open class B : R|A|, R|AInt| { - public open operator function foo1(x: R|ft|): R|ft| + public open operator function foo1(x: R|kotlin/String|): R|kotlin/String| - @R|javax/annotation/Nonnull|() public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|ft|): R|ft| + @R|javax/annotation/Nonnull|() public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/String| - public open operator function bar1(x: R|ft|?): R|ft|? + public open operator function bar1(x: R|kotlin/String|?): R|kotlin/String|? - public open operator function baz(x: R|ft|): R|ft| + public open operator function baz(x: R|kotlin/String|): R|kotlin/String| } @R|NonNullApi|() public open class C : R|A|, R|AInt| { - public open operator function foo1(x: R|ft|): R|ft| + public open operator function foo1(x: R|kotlin/String|): R|kotlin/String| - public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|ft|): R|ft| + public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/String| - public open operator function bar1(x: R|ft|?): R|ft|? + public open operator function bar1(x: R|kotlin/String|?): R|kotlin/String|? - @R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|ft|?): R|ft|? + @R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/String|? - public open operator function baz(x: R|ft|): R|ft| + public open operator function baz(x: R|kotlin/String|): R|kotlin/String| } @R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.TYPE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|(), R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class NonNullApi : R|java/lang/annotation/Annotation| { diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt index 0d8c3d8745e..9d13756061d 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt @@ -1,13 +1,13 @@ @R|NonNullApi|() public open class A : R|java/lang/Object| { - public open property field(var): R|ft| - public get(): R|ft| - public set(value: R|ft|): kotlin/Unit + public open property field(var): R|kotlin/String| + public get(): R|kotlin/String| + public set(value: R|kotlin/String|): kotlin/Unit - public open operator function foo(x: R|ft|, @R|javax/annotation/CheckForNull|() y: R|ft|?): R|ft| + public open operator function foo(x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|kotlin/String| - @R|NullableApi|() public open operator function foobar(x: R|ft|?, @R|NonNullApi|() y: R|ft|): R|ft|? + @R|NullableApi|() public open operator function foobar(x: R|kotlin/String|?, @R|NonNullApi|() y: R|kotlin/CharSequence|): R|kotlin/String|? - public open operator function bar(): R|ft| + public open operator function bar(): R|kotlin/String| @R|javax/annotation/Nullable|() public open operator function baz(): R|ft>?, kotlin/collections/List>?>|? diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefault.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefault.fir.txt index bc0206bf785..4484196c076 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefault.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefault.fir.txt @@ -1,10 +1,10 @@ @R|javax/annotation/ParametersAreNonnullByDefault|() public open class A : R|java/lang/Object| { - @R|javax/annotation/Nullable|() public open property field(var): R|ft|? - public get(): R|ft|? - public set(value: R|ft|?): kotlin/Unit + @R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|? + public get(): R|kotlin/String|? + public set(value: R|kotlin/String|?): kotlin/Unit - public open operator function foo(q: R|ft|, @R|javax/annotation/Nonnull|() x: R|ft|, @R|javax/annotation/CheckForNull|() y: R|ft|?): R|ft|! + public open operator function foo(q: R|kotlin/String|, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft|! - @R|javax/annotation/Nonnull|() public open operator function bar(): R|ft| + @R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String| } diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefaultPackage.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefaultPackage.fir.txt index 009ddb12340..8c6f36e64f7 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefaultPackage.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/ParametersAreNonnullByDefaultPackage.fir.txt @@ -1,20 +1,20 @@ public open class A : R|java/lang/Object| { - @R|javax/annotation/Nullable|() public open property field(var): R|ft|? - public get(): R|ft|? - public set(value: R|ft|?): kotlin/Unit + @R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|? + public get(): R|kotlin/String|? + public set(value: R|kotlin/String|?): kotlin/Unit - public open operator function foo(q: R|ft|!, @R|javax/annotation/Nonnull|() x: R|ft|, @R|javax/annotation/CheckForNull|() y: R|ft|?): R|ft|! + public open operator function foo(q: R|ft|!, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft|! - @R|javax/annotation/Nonnull|() public open operator function bar(): R|ft| + @R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String| } public open class A2 : R|java/lang/Object| { - @R|javax/annotation/Nullable|() public open property field(var): R|ft|? - public get(): R|ft|? - public set(value: R|ft|?): kotlin/Unit + @R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|? + public get(): R|kotlin/String|? + public set(value: R|kotlin/String|?): kotlin/Unit - public open operator function foo(q: R|ft|!, @R|javax/annotation/Nonnull|() x: R|ft|, @R|javax/annotation/CheckForNull|() y: R|ft|?): R|ft|! + public open operator function foo(q: R|ft|!, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft|! - @R|javax/annotation/Nonnull|() public open operator function bar(): R|ft| + @R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String| } diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt index c656893aee9..00528602866 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt @@ -3,9 +3,9 @@ public get(): R|ft|! public set(value: R|ft|!): kotlin/Unit - public open operator function foo(x: R|ft|, @R|spr/Nullable|() y: R|ft|?): R|ft| + public open operator function foo(x: R|kotlin/String|, @R|spr/Nullable|() y: R|kotlin/CharSequence|?): R|kotlin/String| - public open operator function bar(): R|ft| + public open operator function bar(): R|kotlin/String| @R|spr/Nullable|() public open operator function baz(): R|ft>?, kotlin/collections/List>?>|? diff --git a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt index 94a8568e979..00304c5a505 100644 --- a/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt +++ b/compiler/fir/resolve/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt @@ -3,7 +3,7 @@ public open class A : R|java/lang/Object| { public get(): R|ft|! public set(value: R|ft|!): kotlin/Unit - public open operator function foo(x: R|ft|!, @R|spr/Nullable|() y: R|ft|?): R|ft|! + public open operator function foo(x: R|ft|!, @R|spr/Nullable|() y: R|kotlin/CharSequence|?): R|ft|! public open operator function bar(): R|ft|! diff --git a/compiler/testData/loadJava/compiledJava/modality/ModalityOfFakeOverrides.fir.txt b/compiler/testData/loadJava/compiledJava/modality/ModalityOfFakeOverrides.fir.txt index cb6f61254e7..ae3c6863b06 100644 --- a/compiler/testData/loadJava/compiledJava/modality/ModalityOfFakeOverrides.fir.txt +++ b/compiler/testData/loadJava/compiledJava/modality/ModalityOfFakeOverrides.fir.txt @@ -1,5 +1,5 @@ public open class ModalityOfFakeOverrides : R|java/util/AbstractList| { - @R|java/lang/Override|() @R|org/jetbrains/annotations/NotNull|() public open operator function get(index: R|kotlin/Int|): R|ft| + @R|java/lang/Override|() @R|org/jetbrains/annotations/NotNull|() public open operator function get(index: R|kotlin/Int|): R|kotlin/String| @R|java/lang/Override|() public open operator function size(): R|kotlin/Int| diff --git a/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt b/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt index 316a82652cd..a748dad1590 100644 --- a/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt +++ b/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt @@ -1,6 +1,6 @@ public abstract interface ReadOnlyExtendsWildcard : R|java/lang/Object| { public abstract operator function bar(): R|kotlin/Unit| - public abstract operator function foo(@R|kotlin/annotations/jvm/ReadOnly|() x: R|ft, kotlin/collections/List?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|ft, kotlin/Comparable>|): R|kotlin/Unit| + public abstract operator function foo(@R|kotlin/annotations/jvm/ReadOnly|() x: R|ft, kotlin/collections/List?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|kotlin/Comparable|): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/notNull/NotNullField.fir.txt b/compiler/testData/loadJava/compiledJava/notNull/NotNullField.fir.txt index 6062966b2b3..2d566727761 100644 --- a/compiler/testData/loadJava/compiledJava/notNull/NotNullField.fir.txt +++ b/compiler/testData/loadJava/compiledJava/notNull/NotNullField.fir.txt @@ -1,6 +1,6 @@ public open class NotNullField : R|java/lang/Object| { - @R|org/jetbrains/annotations/NotNull|() public open property hi(var): R|ft| - public get(): R|ft| - public set(value: R|ft|): kotlin/Unit + @R|org/jetbrains/annotations/NotNull|() public open property hi(var): R|kotlin/String| + public get(): R|kotlin/String| + public set(value: R|kotlin/String|): kotlin/Unit } diff --git a/compiler/testData/loadJava/compiledJava/notNull/NotNullMethod.fir.txt b/compiler/testData/loadJava/compiledJava/notNull/NotNullMethod.fir.txt index 47dffd65417..673174f4d74 100644 --- a/compiler/testData/loadJava/compiledJava/notNull/NotNullMethod.fir.txt +++ b/compiler/testData/loadJava/compiledJava/notNull/NotNullMethod.fir.txt @@ -1,4 +1,4 @@ public open class NotNullMethod : R|java/lang/Object| { - @R|org/jetbrains/annotations/NotNull|() public open operator function hi(): R|ft| + @R|org/jetbrains/annotations/NotNull|() public open operator function hi(): R|kotlin/String| } diff --git a/compiler/testData/loadJava/compiledJava/notNull/NotNullParameter.fir.txt b/compiler/testData/loadJava/compiledJava/notNull/NotNullParameter.fir.txt index 8d5ee2d2151..c5953a721d2 100644 --- a/compiler/testData/loadJava/compiledJava/notNull/NotNullParameter.fir.txt +++ b/compiler/testData/loadJava/compiledJava/notNull/NotNullParameter.fir.txt @@ -1,4 +1,4 @@ public open class NotNullParameter : R|java/lang/Object| { - public open operator function hi(@R|org/jetbrains/annotations/NotNull|() param: R|ft|): R|kotlin/Unit| + public open operator function hi(@R|org/jetbrains/annotations/NotNull|() param: R|kotlin/String|): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/sam/adapters/ConstructorWithAnnotations.fir.txt b/compiler/testData/loadJava/compiledJava/sam/adapters/ConstructorWithAnnotations.fir.txt index 29b4cc1b39e..f35eb186238 100644 --- a/compiler/testData/loadJava/compiledJava/sam/adapters/ConstructorWithAnnotations.fir.txt +++ b/compiler/testData/loadJava/compiledJava/sam/adapters/ConstructorWithAnnotations.fir.txt @@ -1,4 +1,4 @@ public open class ConstructorWithAnnotations : R|java/lang/Object| { - public final function ConstructorWithAnnotations(r: R|ft|!, @R|org/jetbrains/annotations/NotNull|() s: R|ft|): R|test/ConstructorWithAnnotations| + public final function ConstructorWithAnnotations(r: R|ft|!, @R|org/jetbrains/annotations/NotNull|() s: R|kotlin/String|): R|test/ConstructorWithAnnotations| } diff --git a/idea/testData/fir/multiModule/basicWithAnnotatedJava/extraDump.java.txt b/idea/testData/fir/multiModule/basicWithAnnotatedJava/extraDump.java.txt index 86f62d09d53..a2796d44d6f 100644 --- a/idea/testData/fir/multiModule/basicWithAnnotatedJava/extraDump.java.txt +++ b/idea/testData/fir/multiModule/basicWithAnnotatedJava/extraDump.java.txt @@ -1,4 +1,4 @@ public open class Annotated : R|java/lang/Object| { - @R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|ft|?): R|ft| + @R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|kotlin/String|?): R|kotlin/String| } diff --git a/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/extraDump.java.txt b/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/extraDump.java.txt index 540f08d3313..3529215de85 100644 --- a/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/extraDump.java.txt +++ b/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/extraDump.java.txt @@ -1,8 +1,8 @@ public open class Annotated : R|java/lang/Object| { - @R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|ft|?): R|ft| + @R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|kotlin/String|?): R|kotlin/String| } public open class AnnotatedDerived : R|Annotated| { - public open operator function foo(param: R|ft|?): R|ft| + public open operator function foo(param: R|kotlin/String|?): R|kotlin/String| } diff --git a/idea/testData/fir/multiModule/javaInheritsRawKotlin/extraDump.java.txt b/idea/testData/fir/multiModule/javaInheritsRawKotlin/extraDump.java.txt index 8bbbf604a78..f9919e546be 100644 --- a/idea/testData/fir/multiModule/javaInheritsRawKotlin/extraDump.java.txt +++ b/idea/testData/fir/multiModule/javaInheritsRawKotlin/extraDump.java.txt @@ -1,4 +1,4 @@ public open class Some : R|java/lang/Object|, R|Strange<*>| { - public open operator function foo(): R|ft| + public open operator function foo(): R|kotlin/Any| }