diff --git a/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineAny.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineAny.kt index a50e9afaef7..a1f341d3edc 100644 --- a/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineAny.kt +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineAny.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // WITH_COROUTINES // COMMON_COROUTINES_TEST diff --git a/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineInt.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineInt.kt index 905cc81ea4b..f9bf01661d4 100644 --- a/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineInt.kt +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine_InlineInt.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // WITH_COROUTINES // COMMON_COROUTINES_TEST diff --git a/compiler/testData/codegen/box/inlineClasses/boundCallableReferencePassedToInlineFunction.kt b/compiler/testData/codegen/box/inlineClasses/boundCallableReferencePassedToInlineFunction.kt index 63dc1d86e76..2843b975a31 100644 --- a/compiler/testData/codegen/box/inlineClasses/boundCallableReferencePassedToInlineFunction.kt +++ b/compiler/testData/codegen/box/inlineClasses/boundCallableReferencePassedToInlineFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME inline class IcInt(val i: Int) { diff --git a/compiler/testData/codegen/box/inlineClasses/boxNullableValueOfInlineClassWithNonNullUnderlyingType.kt b/compiler/testData/codegen/box/inlineClasses/boxNullableValueOfInlineClassWithNonNullUnderlyingType.kt index 568411366ac..1a79022a471 100644 --- a/compiler/testData/codegen/box/inlineClasses/boxNullableValueOfInlineClassWithNonNullUnderlyingType.kt +++ b/compiler/testData/codegen/box/inlineClasses/boxNullableValueOfInlineClassWithNonNullUnderlyingType.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR class BoxT(val boxed: T) class BoxAny(val boxed: Any?) diff --git a/compiler/testData/codegen/box/inlineClasses/defaultParameterValues/inlineClassPrimaryConstructorWithInlineClassValue.kt b/compiler/testData/codegen/box/inlineClasses/defaultParameterValues/inlineClassPrimaryConstructorWithInlineClassValue.kt index fb6e55bfd0c..aa9d5033553 100644 --- a/compiler/testData/codegen/box/inlineClasses/defaultParameterValues/inlineClassPrimaryConstructorWithInlineClassValue.kt +++ b/compiler/testData/codegen/box/inlineClasses/defaultParameterValues/inlineClassPrimaryConstructorWithInlineClassValue.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Inner(val result: String) diff --git a/compiler/testData/codegen/box/inlineClasses/equalityChecksInlineClassNonNull.kt b/compiler/testData/codegen/box/inlineClasses/equalityChecksInlineClassNonNull.kt index 4f943a47185..5de9ddef6c6 100644 --- a/compiler/testData/codegen/box/inlineClasses/equalityChecksInlineClassNonNull.kt +++ b/compiler/testData/codegen/box/inlineClasses/equalityChecksInlineClassNonNull.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Inner(val w: String) inline class A(val x: Inner) diff --git a/compiler/testData/codegen/box/inlineClasses/equalityChecksNegatedInlineClassNonNull.kt b/compiler/testData/codegen/box/inlineClasses/equalityChecksNegatedInlineClassNonNull.kt index 12d25724b92..6fe87b662ed 100644 --- a/compiler/testData/codegen/box/inlineClasses/equalityChecksNegatedInlineClassNonNull.kt +++ b/compiler/testData/codegen/box/inlineClasses/equalityChecksNegatedInlineClassNonNull.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Inner(val w: String) inline class A(val x: Inner) diff --git a/compiler/testData/codegen/box/inlineClasses/equalsEvaluationOrderInlineClass.kt b/compiler/testData/codegen/box/inlineClasses/equalsEvaluationOrderInlineClass.kt index ca059b63557..7fc6d414460 100644 --- a/compiler/testData/codegen/box/inlineClasses/equalsEvaluationOrderInlineClass.kt +++ b/compiler/testData/codegen/box/inlineClasses/equalsEvaluationOrderInlineClass.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Inner(val x: Int) inline class A(val x: Inner) diff --git a/compiler/testData/codegen/box/inlineClasses/kt26103.kt b/compiler/testData/codegen/box/inlineClasses/kt26103.kt index e19122dcc0c..28e6511bee3 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt26103.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt26103.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME // !LANGUAGE: +InlineClasses // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/inlineClasses/kt26103_original.kt b/compiler/testData/codegen/box/inlineClasses/kt26103_original.kt index 7340a7fcd32..0be2c6752ba 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt26103_original.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt26103_original.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME inline class Foo(val x: Int) diff --git a/compiler/testData/codegen/box/inlineClasses/kt27096.kt b/compiler/testData/codegen/box/inlineClasses/kt27096.kt index 39f4015b019..c85cb433458 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27096.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27096.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME // !LANGUAGE: +InlineClasses // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/inlineClasses/kt27096_enum.kt b/compiler/testData/codegen/box/inlineClasses/kt27096_enum.kt index 19e216a1ed3..22f381b54e0 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27096_enum.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27096_enum.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR enum class En { N, A, B, C } diff --git a/compiler/testData/codegen/box/inlineClasses/kt27096_functional.kt b/compiler/testData/codegen/box/inlineClasses/kt27096_functional.kt index a51a1e1fc57..f6c410d8e49 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27096_functional.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27096_functional.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Z1(val x: () -> String) inline class Z2(val z: Z1) diff --git a/compiler/testData/codegen/box/inlineClasses/kt27096_nullablePrimitive.kt b/compiler/testData/codegen/box/inlineClasses/kt27096_nullablePrimitive.kt index 0841c2bd96c..45fad644c6d 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27096_nullablePrimitive.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27096_nullablePrimitive.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Z1(val x: Int?) inline class Z2(val z: Z1) diff --git a/compiler/testData/codegen/box/inlineClasses/kt27096_nullableReference.kt b/compiler/testData/codegen/box/inlineClasses/kt27096_nullableReference.kt index f803bb6fc2a..1fbeae87229 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27096_nullableReference.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27096_nullableReference.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Z1(val x: String?) inline class Z2(val z: Z1) diff --git a/compiler/testData/codegen/box/inlineClasses/kt27096_primitive.kt b/compiler/testData/codegen/box/inlineClasses/kt27096_primitive.kt index 561662bd932..fa29779adf9 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27096_primitive.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27096_primitive.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Z1(val x: Int) inline class Z2(val z: Z1) diff --git a/compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt b/compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt index d3b4714f9ab..9679a5e0e1e 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Z1(val x: String) inline class Z2(val z: Z1) diff --git a/compiler/testData/codegen/box/inlineClasses/kt27132.kt b/compiler/testData/codegen/box/inlineClasses/kt27132.kt index 892993ba393..8d6916f8e7d 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt27132.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt27132.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME // !LANGUAGE: +InlineClasses // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/inlineClasses/kt28405.kt b/compiler/testData/codegen/box/inlineClasses/kt28405.kt index f8eeac49418..448ed6fea8f 100644 --- a/compiler/testData/codegen/box/inlineClasses/kt28405.kt +++ b/compiler/testData/codegen/box/inlineClasses/kt28405.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // KJS_WITH_FULL_RUNTIME diff --git a/compiler/testData/codegen/box/inlineClasses/mappingOfBoxedFlexibleInlineClassType.kt b/compiler/testData/codegen/box/inlineClasses/mappingOfBoxedFlexibleInlineClassType.kt index 350541294af..6f686d9ce72 100644 --- a/compiler/testData/codegen/box/inlineClasses/mappingOfBoxedFlexibleInlineClassType.kt +++ b/compiler/testData/codegen/box/inlineClasses/mappingOfBoxedFlexibleInlineClassType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // TARGET_BACKEND: JVM diff --git a/compiler/testData/codegen/box/inlineClasses/nullableWrapperEquality.kt b/compiler/testData/codegen/box/inlineClasses/nullableWrapperEquality.kt index 7527759c8fd..a075ffe69a1 100644 --- a/compiler/testData/codegen/box/inlineClasses/nullableWrapperEquality.kt +++ b/compiler/testData/codegen/box/inlineClasses/nullableWrapperEquality.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Z1(val x: String) inline class ZN(val z: Z1?) diff --git a/compiler/testData/codegen/box/inlineClasses/unboxNullableValueOfInlineClassWithNonNullUnderlyingType.kt b/compiler/testData/codegen/box/inlineClasses/unboxNullableValueOfInlineClassWithNonNullUnderlyingType.kt index 4869aa54d0f..e120b9bb983 100644 --- a/compiler/testData/codegen/box/inlineClasses/unboxNullableValueOfInlineClassWithNonNullUnderlyingType.kt +++ b/compiler/testData/codegen/box/inlineClasses/unboxNullableValueOfInlineClassWithNonNullUnderlyingType.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR class BoxT(val boxed: T) class BoxAny(val boxed: Any?) diff --git a/compiler/testData/codegen/box/reflection/call/inlineClasses/constructorWithInlineClassParameters.kt b/compiler/testData/codegen/box/reflection/call/inlineClasses/constructorWithInlineClassParameters.kt index 253a6b5b4aa..afd064f8144 100644 --- a/compiler/testData/codegen/box/reflection/call/inlineClasses/constructorWithInlineClassParameters.kt +++ b/compiler/testData/codegen/box/reflection/call/inlineClasses/constructorWithInlineClassParameters.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND: JS_IR, JS, NATIVE // IGNORE_BACKEND: JS_IR_ES6 // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/call/inlineClasses/inlineClassConstructor.kt b/compiler/testData/codegen/box/reflection/call/inlineClasses/inlineClassConstructor.kt index 7b979a6d23d..19467f39aa0 100644 --- a/compiler/testData/codegen/box/reflection/call/inlineClasses/inlineClassConstructor.kt +++ b/compiler/testData/codegen/box/reflection/call/inlineClasses/inlineClassConstructor.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND: JS_IR, JS, NATIVE // IGNORE_BACKEND: JS_IR_ES6 // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt b/compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt index 29ba00ee9cc..89156e987e5 100644 --- a/compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt +++ b/compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND: JS_IR, JS, NATIVE // IGNORE_BACKEND: JS_IR_ES6 // WITH_REFLECT diff --git a/compiler/testData/codegen/box/unsignedTypes/equalsImplForInlineClassWrappingNullableInlineClass.kt b/compiler/testData/codegen/box/unsignedTypes/equalsImplForInlineClassWrappingNullableInlineClass.kt index 35665550457..becf919b9bc 100644 --- a/compiler/testData/codegen/box/unsignedTypes/equalsImplForInlineClassWrappingNullableInlineClass.kt +++ b/compiler/testData/codegen/box/unsignedTypes/equalsImplForInlineClassWrappingNullableInlineClass.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR inline class Z(val x: Int) inline class NZ1(val nz: Z?) diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/inlineClassesUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/inlineClassesUtils.kt index 54b4a0c7b5b..91d6094ee33 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/inlineClassesUtils.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/inlineClassesUtils.kt @@ -8,7 +8,9 @@ package org.jetbrains.kotlin.resolve import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.types.KotlinType +import org.jetbrains.kotlin.types.TypeSubstitutor import org.jetbrains.kotlin.types.TypeUtils +import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.utils.addToStdlib.safeAs fun ClassDescriptor.underlyingRepresentation(): ValueParameterDescriptor? { @@ -28,7 +30,7 @@ fun KotlinType.isInlineClassType(): Boolean = constructor.declarationDescriptor? fun KotlinType.substitutedUnderlyingType(): KotlinType? { val parameter = unsubstitutedUnderlyingParameter() ?: return null - return memberScope.getContributedVariables(parameter.name, NoLookupLocation.FOR_ALREADY_TRACKED).singleOrNull()?.type + return TypeSubstitutor.create(this).substitute(parameter.type, Variance.INVARIANT) } fun KotlinType.isRecursiveInlineClassType() =