[FIR] fix resolve contract violation from ConeTypeContext.getValueClassProperties

^KT-54890
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 0685b1a..a29d4bb 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.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 @@
 
     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 04f5d1b..16a50af 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.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.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 @@
     override fun TypeConstructorMarker.getValueClassProperties(): List<Pair<Name, SimpleTypeMarker>>? {
         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 bf08dad..77f4c7d 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 void invIn(@org.jetbrains.annotations.NotNull() Out<? extends Inv<? super Final>>);//  invIn(Out<? extends Inv<? super Final>>)
 
-  public final void invInAny(@org.jetbrains.annotations.NotNull() Out<? extends Inv<? super java.lang.Object>>);//  invInAny(Out<? extends Inv<? super java.lang.Object>>)
+  public final void invInAny(@org.jetbrains.annotations.NotNull() Out<Inv<? super java.lang.Object>>);//  invInAny(Out<Inv<? super java.lang.Object>>)
 
   public final void invInOutFinal(@org.jetbrains.annotations.NotNull() Inv<In<Out<? extends Final>>>);//  invInOutFinal(Inv<In<Out<? extends Final>>>)
 
   public final void invInOutOpen(@org.jetbrains.annotations.NotNull() Inv<In<Out<? extends Open>>>);//  invInOutOpen(Inv<In<Out<? extends Open>>>)
 
-  public final void invInv(@org.jetbrains.annotations.NotNull() Out<? extends Inv<Open>>);//  invInv(Out<? extends Inv<Open>>)
+  public final void invInv(@org.jetbrains.annotations.NotNull() Out<Inv<Open>>);//  invInv(Out<Inv<Open>>)
 
   public final void invOpen(@org.jetbrains.annotations.NotNull() Inv<Open>);//  invOpen(Inv<Open>)
 
@@ -70,7 +70,7 @@
 
   public final void outIn(@org.jetbrains.annotations.NotNull() Out<? extends In<? super Final>>);//  outIn(Out<? extends In<? super Final>>)
 
-  public final void outInAny(@org.jetbrains.annotations.NotNull() Out<? extends In<java.lang.Object>>);//  outInAny(Out<? extends In<java.lang.Object>>)
+  public final void outInAny(@org.jetbrains.annotations.NotNull() Out<In<java.lang.Object>>);//  outInAny(Out<In<java.lang.Object>>)
 
   public final void outOfArrayOpen(@org.jetbrains.annotations.NotNull() Out<Open[]>);//  outOfArrayOpen(Out<Open[]>)
 
diff --git a/compiler/testData/diagnostics/tests/inlineClasses/lateinitInlineClassesOn.kt b/compiler/testData/diagnostics/tests/inlineClasses/lateinitInlineClassesOn.kt
index b1bc0d2..9c7f5f9 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 3c09575..8368691 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 e8d68db..39ed198 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 359582a..a68d056 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 6ae1cf7..7027238 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 8143417..b9a60ab 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