FIR resolve: support trivial when typing
This commit is contained in:
committed by
Mikhail Glukhikh
parent
55467909da
commit
a6b2e119f7
+9
-2
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.visitors.compose
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.resolve.calls.NewCommonSuperTypeCalculator
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.buildAbstractResultingSubstitutor
|
import org.jetbrains.kotlin.resolve.calls.inference.buildAbstractResultingSubstitutor
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.components.KotlinConstraintSystemCompleter
|
import org.jetbrains.kotlin.resolve.calls.inference.components.KotlinConstraintSystemCompleter
|
||||||
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator
|
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator
|
||||||
@@ -167,7 +168,8 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
|
|||||||
|
|
||||||
val inferenceComponents = InferenceComponents(object : ConeInferenceContext, TypeSystemInferenceExtensionContextDelegate {
|
val inferenceComponents = InferenceComponents(object : ConeInferenceContext, TypeSystemInferenceExtensionContextDelegate {
|
||||||
override fun findCommonIntegerLiteralTypesSuperType(explicitSupertypes: List<SimpleTypeMarker>): SimpleTypeMarker? {
|
override fun findCommonIntegerLiteralTypesSuperType(explicitSupertypes: List<SimpleTypeMarker>): SimpleTypeMarker? {
|
||||||
TODO("not implemented")
|
//TODO wtf
|
||||||
|
return explicitSupertypes.firstOrNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun TypeConstructorMarker.getApproximatedIntegerLiteralType(): KotlinTypeMarker {
|
override fun TypeConstructorMarker.getApproximatedIntegerLiteralType(): KotlinTypeMarker {
|
||||||
@@ -413,7 +415,12 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun commonSuperType(types: List<FirTypeRef>): FirTypeRef? {
|
private fun commonSuperType(types: List<FirTypeRef>): FirTypeRef? {
|
||||||
return types.firstOrNull()
|
val commonSuperType = with(NewCommonSuperTypeCalculator) {
|
||||||
|
with(inferenceComponents.ctx) {
|
||||||
|
commonSuperType(types.map { it.coneTypeUnsafe() })
|
||||||
|
}
|
||||||
|
} as ConeKotlinType
|
||||||
|
return FirResolvedTypeRefImpl(session, null, commonSuperType, false, emptyList())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformWhenExpression(whenExpression: FirWhenExpression, data: Any?): CompositeTransformResult<FirStatement> {
|
override fun transformWhenExpression(whenExpression: FirWhenExpression, data: Any?): CompositeTransformResult<FirStatement> {
|
||||||
|
|||||||
Reference in New Issue
Block a user