[FIR] Use builtinTypes instead of creating new ones
This commit is contained in:
@@ -209,7 +209,7 @@ class FirCallResolver(
|
|||||||
resultType = if (classId.isLocal) {
|
resultType = if (classId.isLocal) {
|
||||||
typeForQualifierByDeclaration(referencedSymbol.fir, resultType)
|
typeForQualifierByDeclaration(referencedSymbol.fir, resultType)
|
||||||
?: resultType.resolvedTypeFromPrototype(
|
?: resultType.resolvedTypeFromPrototype(
|
||||||
StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
|
session.builtinTypes.unitType.type//StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
typeForQualifier(this)
|
typeForQualifier(this)
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ fun BodyResolveComponents.typeForQualifier(resolvedQualifier: FirResolvedQualifi
|
|||||||
}
|
}
|
||||||
// TODO: Handle no value type here
|
// TODO: Handle no value type here
|
||||||
return resultType.resolvedTypeFromPrototype(
|
return resultType.resolvedTypeFromPrototype(
|
||||||
StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
|
session.builtinTypes.unitType.type//StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -28,19 +28,19 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, ConeTypeCo
|
|||||||
override val isErrorTypeAllowed: Boolean get() = false
|
override val isErrorTypeAllowed: Boolean get() = false
|
||||||
|
|
||||||
override fun nullableNothingType(): SimpleTypeMarker {
|
override fun nullableNothingType(): SimpleTypeMarker {
|
||||||
return StandardClassIds.Nothing(symbolProvider).constructType(emptyArray(), true)
|
return session.builtinTypes.nullableNothingType.type//StandardClassIds.Nothing(symbolProvider).constructType(emptyArray(), true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun nullableAnyType(): SimpleTypeMarker {
|
override fun nullableAnyType(): SimpleTypeMarker {
|
||||||
return StandardClassIds.Any(symbolProvider).constructType(emptyArray(), true)
|
return session.builtinTypes.nullableAnyType.type//StandardClassIds.Any(symbolProvider).constructType(emptyArray(), true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun nothingType(): SimpleTypeMarker {
|
override fun nothingType(): SimpleTypeMarker {
|
||||||
return StandardClassIds.Nothing(symbolProvider).constructType(emptyArray(), false)
|
return session.builtinTypes.nothingType.type//StandardClassIds.Nothing(symbolProvider).constructType(emptyArray(), false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun anyType(): SimpleTypeMarker {
|
override fun anyType(): SimpleTypeMarker {
|
||||||
return StandardClassIds.Any(symbolProvider).constructType(emptyArray(), false)
|
return session.builtinTypes.anyType.type//StandardClassIds.Any(symbolProvider).constructType(emptyArray(), false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createFlexibleType(lowerBound: SimpleTypeMarker, upperBound: SimpleTypeMarker): KotlinTypeMarker {
|
override fun createFlexibleType(lowerBound: SimpleTypeMarker, upperBound: SimpleTypeMarker): KotlinTypeMarker {
|
||||||
|
|||||||
+1
-1
@@ -72,7 +72,7 @@ internal object CreateFreshTypeVariableSubstitutorStage : ResolutionStage() {
|
|||||||
is FirStarProjection -> csBuilder.addEqualityConstraint(
|
is FirStarProjection -> csBuilder.addEqualityConstraint(
|
||||||
freshVariable.defaultType,
|
freshVariable.defaultType,
|
||||||
typeParameter.bounds.firstOrNull()?.coneTypeUnsafe()
|
typeParameter.bounds.firstOrNull()?.coneTypeUnsafe()
|
||||||
?: StandardClassIds.Any(sink.components.session.firSymbolProvider).constructType(emptyArray(), true),
|
?: sink.components.session.builtinTypes.nullableAnyType.type, //StandardClassIds.Any(sink.components.session.firSymbolProvider).constructType(emptyArray(), true),
|
||||||
SimpleConstraintSystemConstraintPosition
|
SimpleConstraintSystemConstraintPosition
|
||||||
)
|
)
|
||||||
else -> assert(typeArgument == FirTypePlaceholderProjection) {
|
else -> assert(typeArgument == FirTypePlaceholderProjection) {
|
||||||
|
|||||||
+2
-2
@@ -127,7 +127,7 @@ private fun extraLambdaInfo(
|
|||||||
?: expectedType?.typeArguments?.singleOrNull()?.safeAs<ConeTypedProjection>()?.type?.takeIf { isFunctionSupertype }
|
?: expectedType?.typeArguments?.singleOrNull()?.safeAs<ConeTypedProjection>()?.type?.takeIf { isFunctionSupertype }
|
||||||
?: typeVariable.defaultType
|
?: typeVariable.defaultType
|
||||||
|
|
||||||
val nothingType = StandardClassIds.Nothing(argument.session.firSymbolProvider).constructType(emptyArray(), false)
|
val nothingType = argument.session.builtinTypes.nothingType.type //StandardClassIds.Nothing(argument.session.firSymbolProvider).constructType(emptyArray(), false)
|
||||||
val parameters = argument.valueParameters?.map {
|
val parameters = argument.valueParameters?.map {
|
||||||
it.returnTypeRef.coneTypeSafe<ConeKotlinType>() ?: nothingType
|
it.returnTypeRef.coneTypeSafe<ConeKotlinType>() ?: nothingType
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
@@ -166,7 +166,7 @@ private fun extractLambdaParameters(expectedType: ConeKotlinType, argument: FirA
|
|||||||
val parameters = argument.valueParameters
|
val parameters = argument.valueParameters
|
||||||
val expectedParameters = expectedType.extractParametersForFunctionalType(expectedTypeIsExtensionFunctionType)
|
val expectedParameters = expectedType.extractParametersForFunctionalType(expectedTypeIsExtensionFunctionType)
|
||||||
|
|
||||||
val nullableAnyType = StandardClassIds.Any(argument.session.firSymbolProvider).constructType(emptyArray(), true)
|
val nullableAnyType = argument.session.builtinTypes.nullableAnyType.type //StandardClassIds.Any(argument.session.firSymbolProvider).constructType(emptyArray(), true)
|
||||||
|
|
||||||
if (parameters.isEmpty()) {
|
if (parameters.isEmpty()) {
|
||||||
return expectedParameters.map { it?.type ?: nullableAnyType }
|
return expectedParameters.map { it?.type ?: nullableAnyType }
|
||||||
|
|||||||
+1
-1
@@ -108,7 +108,7 @@ class PostponedArgumentsAnalyzer(
|
|||||||
lambda: ResolvedLambdaAtom//,
|
lambda: ResolvedLambdaAtom//,
|
||||||
//diagnosticHolder: KotlinDiagnosticsHolder
|
//diagnosticHolder: KotlinDiagnosticsHolder
|
||||||
) {
|
) {
|
||||||
val unitType = Unit(components.session.firSymbolProvider).constructType(emptyArray(), false)
|
val unitType = components.session.builtinTypes.unitType.type//Unit(components.session.firSymbolProvider).constructType(emptyArray(), false)
|
||||||
val stubsForPostponedVariables = c.bindingStubsForPostponedVariables()
|
val stubsForPostponedVariables = c.bindingStubsForPostponedVariables()
|
||||||
val currentSubstitutor = c.buildCurrentSubstitutor(stubsForPostponedVariables.mapKeys { it.key.freshTypeConstructor(c) })
|
val currentSubstitutor = c.buildCurrentSubstitutor(stubsForPostponedVariables.mapKeys { it.key.freshTypeConstructor(c) })
|
||||||
|
|
||||||
|
|||||||
+1
-4
@@ -264,10 +264,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
|
|||||||
.transformArguments(integerLiteralTypeApproximator, null)
|
.transformArguments(integerLiteralTypeApproximator, null)
|
||||||
when (resolved.operation) {
|
when (resolved.operation) {
|
||||||
FirOperation.IS, FirOperation.NOT_IS -> {
|
FirOperation.IS, FirOperation.NOT_IS -> {
|
||||||
resolved.resultType = FirResolvedTypeRefImpl(
|
resolved.resultType = session.builtinTypes.booleanType
|
||||||
null,
|
|
||||||
StandardClassIds.Boolean(symbolProvider).constructType(emptyArray(), isNullable = false)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
FirOperation.AS -> {
|
FirOperation.AS -> {
|
||||||
resolved.resultType = resolved.conversionTypeRef
|
resolved.resultType = resolved.conversionTypeRef
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
|
|||||||
require(this is ConeKotlinType)
|
require(this is ConeKotlinType)
|
||||||
|
|
||||||
return this.typeArguments.getOrNull(index)
|
return this.typeArguments.getOrNull(index)
|
||||||
?: StandardClassIds.Any(session.firSymbolProvider).constructType(emptyArray(), false) // TODO wtf
|
?: session.builtinTypes.anyType.type//StandardClassIds.Any(session.firSymbolProvider).constructType(emptyArray(), false) // TODO wtf
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun KotlinTypeMarker.asTypeArgument(): TypeArgumentMarker {
|
override fun KotlinTypeMarker.asTypeArgument(): TypeArgumentMarker {
|
||||||
@@ -514,7 +514,7 @@ class ConeTypeCheckerContext(
|
|||||||
val substitution =
|
val substitution =
|
||||||
declaration.typeParameters.zip(type.typeArguments).associate { (parameter, argument) ->
|
declaration.typeParameters.zip(type.typeArguments).associate { (parameter, argument) ->
|
||||||
parameter.symbol to ((argument as? ConeTypedProjection)?.type
|
parameter.symbol to ((argument as? ConeTypedProjection)?.type
|
||||||
?: StandardClassIds.Any(session.firSymbolProvider).constructType(emptyArray(), isNullable = true))
|
?: session.builtinTypes.nullableAnyType.type)//StandardClassIds.Any(session.firSymbolProvider).constructType(emptyArray(), isNullable = true))
|
||||||
}
|
}
|
||||||
substitutorByMap(substitution)
|
substitutorByMap(substitution)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user