diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirPsiTypeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirPsiTypeProvider.kt index 0685b1a4655..a29d4bb7d8c 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirPsiTypeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirPsiTypeProvider.kt @@ -27,10 +27,12 @@ import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.java.JavaVisibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.backend.jvm.jvmTypeMapper +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol +import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.load.kotlin.TypeMappingMode import org.jetbrains.kotlin.load.kotlin.getOptimalModeForReturnType @@ -197,6 +199,8 @@ private fun ConeKotlinType.asPsiType( if (!allowErrorTypes && (this is ConeErrorType)) return null + (this as? ConeClassLikeType)?.lookupTag?.toSymbol(session)?.lazyResolveToPhase(FirResolvePhase.STATUS) + val signatureWriter = BothSignatureWriter(BothSignatureWriter.Mode.SKIP_CHECKS) //TODO Check thread safety diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index 04f5d1bf13f..16a50af3e5c 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -13,7 +13,10 @@ import org.jetbrains.kotlin.descriptors.ValueClassKind import org.jetbrains.kotlin.descriptors.valueClassLoweringKind import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.declarations.utils.* +import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType +import org.jetbrains.kotlin.fir.declarations.utils.isInner +import org.jetbrains.kotlin.fir.declarations.utils.modality +import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.resolve.directExpansionType import org.jetbrains.kotlin.fir.resolve.fullyExpandedType @@ -22,8 +25,8 @@ import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag -import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.symbols.impl.* +import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.name.* import org.jetbrains.kotlin.types.TypeCheckerState import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.DoCustomTransform @@ -568,9 +571,6 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty override fun TypeConstructorMarker.getValueClassProperties(): List>? { val firClass = toFirRegularClass() ?: return null // NB: [FirRegularClass.valueClassRepresentation] is updated by [FirStatusResolveTransformer]. - if (firClass.isInline) { - firClass.symbol.lazyResolveToPhase(FirResolvePhase.STATUS) - } return firClass.valueClassRepresentation?.underlyingPropertyNamesToTypes } diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/wildcardOptimization.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/wildcardOptimization.fir.java index bf08dad7c83..77f4c7d0502 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByPsi/wildcardOptimization.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/wildcardOptimization.fir.java @@ -44,13 +44,13 @@ public final class Container /* Container*/ { public final void invIn(@org.jetbrains.annotations.NotNull() Out>);// invIn(Out>) - public final void invInAny(@org.jetbrains.annotations.NotNull() Out>);// invInAny(Out>) + public final void invInAny(@org.jetbrains.annotations.NotNull() Out>);// invInAny(Out>) public final void invInOutFinal(@org.jetbrains.annotations.NotNull() Inv>>);// invInOutFinal(Inv>>) public final void invInOutOpen(@org.jetbrains.annotations.NotNull() Inv>>);// invInOutOpen(Inv>>) - public final void invInv(@org.jetbrains.annotations.NotNull() Out>);// invInv(Out>) + public final void invInv(@org.jetbrains.annotations.NotNull() Out>);// invInv(Out>) public final void invOpen(@org.jetbrains.annotations.NotNull() Inv);// invOpen(Inv) @@ -70,7 +70,7 @@ public final class Container /* Container*/ { public final void outIn(@org.jetbrains.annotations.NotNull() Out>);// outIn(Out>) - public final void outInAny(@org.jetbrains.annotations.NotNull() Out>);// outInAny(Out>) + public final void outInAny(@org.jetbrains.annotations.NotNull() Out>);// outInAny(Out>) public final void outOfArrayOpen(@org.jetbrains.annotations.NotNull() Out);// outOfArrayOpen(Out) diff --git a/compiler/testData/diagnostics/tests/inlineClasses/lateinitInlineClassesOn.kt b/compiler/testData/diagnostics/tests/inlineClasses/lateinitInlineClassesOn.kt index b1bc0d22428..9c7f5f9371b 100644 --- a/compiler/testData/diagnostics/tests/inlineClasses/lateinitInlineClassesOn.kt +++ b/compiler/testData/diagnostics/tests/inlineClasses/lateinitInlineClassesOn.kt @@ -1,4 +1,3 @@ -// FIR_DISABLE_LAZY_RESOLVE_CHECKS // WITH_STDLIB // SKIP_TXT // !LANGUAGE: +InlineLateinit diff --git a/compiler/testData/diagnostics/tests/inlineClasses/recursiveInlineClasses.kt b/compiler/testData/diagnostics/tests/inlineClasses/recursiveInlineClasses.kt index 3c095759f98..8368691c42c 100644 --- a/compiler/testData/diagnostics/tests/inlineClasses/recursiveInlineClasses.kt +++ b/compiler/testData/diagnostics/tests/inlineClasses/recursiveInlineClasses.kt @@ -1,4 +1,3 @@ -// FIR_DISABLE_LAZY_RESOLVE_CHECKS // FIR_IDENTICAL // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses diff --git a/compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt b/compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt index e8d68db9b3d..39ed198e4f8 100644 --- a/compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt +++ b/compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt @@ -1,4 +1,3 @@ -// FIR_DISABLE_LAZY_RESOLVE_CHECKS // FIR_IDENTICAL // WITH_STDLIB // TARGET_BACKEND: JVM_IR diff --git a/compiler/testData/diagnostics/tests/valueClasses/recursiveValueClasses.kt b/compiler/testData/diagnostics/tests/valueClasses/recursiveValueClasses.kt index 359582a012b..a68d056bcc0 100644 --- a/compiler/testData/diagnostics/tests/valueClasses/recursiveValueClasses.kt +++ b/compiler/testData/diagnostics/tests/valueClasses/recursiveValueClasses.kt @@ -1,4 +1,3 @@ -// FIR_DISABLE_LAZY_RESOLVE_CHECKS // FIR_IDENTICAL // !SKIP_JAVAC // !LANGUAGE: +InlineClasses diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType.kt index 6ae1cf7c418..7027238b511 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType.kt @@ -1,4 +1,3 @@ -// FIR_DISABLE_LAZY_RESOLVE_CHECKS // FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE // !LANGUAGE: +InlineClasses -AllowResultInReturnType, -JvmInlineValueClasses diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType_1_4.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType_1_4.kt index 8143417f656..b9a60ab03b1 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType_1_4.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/usageOfResultTypeInReturnType_1_4.kt @@ -1,4 +1,3 @@ -// FIR_DISABLE_LAZY_RESOLVE_CHECKS // FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE // !LANGUAGE: +InlineClasses +AllowResultInReturnType, -JvmInlineValueClasses