[FIR] fix resolve contract violation from ConeTypeContext.getValueClassProperties
^KT-54890
This commit is contained in:
+4
@@ -27,10 +27,12 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
|||||||
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
|
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.jvmTypeMapper
|
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.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
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.fir.types.*
|
||||||
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
||||||
import org.jetbrains.kotlin.load.kotlin.getOptimalModeForReturnType
|
import org.jetbrains.kotlin.load.kotlin.getOptimalModeForReturnType
|
||||||
@@ -197,6 +199,8 @@ private fun ConeKotlinType.asPsiType(
|
|||||||
|
|
||||||
if (!allowErrorTypes && (this is ConeErrorType)) return null
|
if (!allowErrorTypes && (this is ConeErrorType)) return null
|
||||||
|
|
||||||
|
(this as? ConeClassLikeType)?.lookupTag?.toSymbol(session)?.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
|
|
||||||
val signatureWriter = BothSignatureWriter(BothSignatureWriter.Mode.SKIP_CHECKS)
|
val signatureWriter = BothSignatureWriter(BothSignatureWriter.Mode.SKIP_CHECKS)
|
||||||
|
|
||||||
//TODO Check thread safety
|
//TODO Check thread safety
|
||||||
|
|||||||
@@ -13,7 +13,10 @@ import org.jetbrains.kotlin.descriptors.ValueClassKind
|
|||||||
import org.jetbrains.kotlin.descriptors.valueClassLoweringKind
|
import org.jetbrains.kotlin.descriptors.valueClassLoweringKind
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
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.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.directExpansionType
|
import org.jetbrains.kotlin.fir.resolve.directExpansionType
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
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.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
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.impl.*
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.*
|
||||||
import org.jetbrains.kotlin.types.TypeCheckerState
|
import org.jetbrains.kotlin.types.TypeCheckerState
|
||||||
import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.DoCustomTransform
|
import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.DoCustomTransform
|
||||||
@@ -568,9 +571,6 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
|
|||||||
override fun TypeConstructorMarker.getValueClassProperties(): List<Pair<Name, SimpleTypeMarker>>? {
|
override fun TypeConstructorMarker.getValueClassProperties(): List<Pair<Name, SimpleTypeMarker>>? {
|
||||||
val firClass = toFirRegularClass() ?: return null
|
val firClass = toFirRegularClass() ?: return null
|
||||||
// NB: [FirRegularClass.valueClassRepresentation] is updated by [FirStatusResolveTransformer].
|
// NB: [FirRegularClass.valueClassRepresentation] is updated by [FirStatusResolveTransformer].
|
||||||
if (firClass.isInline) {
|
|
||||||
firClass.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
|
||||||
}
|
|
||||||
return firClass.valueClassRepresentation?.underlyingPropertyNamesToTypes
|
return firClass.valueClassRepresentation?.underlyingPropertyNamesToTypes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -44,13 +44,13 @@ public final class Container /* Container*/ {
|
|||||||
|
|
||||||
public final void invIn(@org.jetbrains.annotations.NotNull() Out<? extends Inv<? super Final>>);// invIn(Out<? extends Inv<? super Final>>)
|
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 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 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>)
|
public final void invOpen(@org.jetbrains.annotations.NotNull() Inv<Open>);// invOpen(Inv<Open>)
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ public final class Container /* Container*/ {
|
|||||||
|
|
||||||
public final void outIn(@org.jetbrains.annotations.NotNull() Out<? extends In<? super Final>>);// outIn(Out<? extends In<? super Final>>)
|
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[]>)
|
public final void outOfArrayOpen(@org.jetbrains.annotations.NotNull() Out<Open[]>);// outOfArrayOpen(Out<Open[]>)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// SKIP_TXT
|
// SKIP_TXT
|
||||||
// !LANGUAGE: +InlineLateinit
|
// !LANGUAGE: +InlineLateinit
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
|
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
|
||||||
|
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// TARGET_BACKEND: JVM_IR
|
// TARGET_BACKEND: JVM_IR
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// !SKIP_JAVAC
|
// !SKIP_JAVAC
|
||||||
// !LANGUAGE: +InlineClasses
|
// !LANGUAGE: +InlineClasses
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
|
||||||
// !LANGUAGE: +InlineClasses -AllowResultInReturnType, -JvmInlineValueClasses
|
// !LANGUAGE: +InlineClasses -AllowResultInReturnType, -JvmInlineValueClasses
|
||||||
|
|||||||
Vendored
-1
@@ -1,4 +1,3 @@
|
|||||||
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
|
||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
|
||||||
// !LANGUAGE: +InlineClasses +AllowResultInReturnType, -JvmInlineValueClasses
|
// !LANGUAGE: +InlineClasses +AllowResultInReturnType, -JvmInlineValueClasses
|
||||||
|
|||||||
Reference in New Issue
Block a user