[FIR] Use builtinTypes instead of creating new ones

This commit is contained in:
Simon Ogorodnik
2019-12-11 23:06:09 +03:00
parent 5de69471b0
commit 0fb883ef62
8 changed files with 13 additions and 16 deletions
@@ -209,7 +209,7 @@ class FirCallResolver(
resultType = if (classId.isLocal) {
typeForQualifierByDeclaration(referencedSymbol.fir, resultType)
?: resultType.resolvedTypeFromPrototype(
StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
session.builtinTypes.unitType.type//StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
)
} else {
typeForQualifier(this)
@@ -319,7 +319,7 @@ fun BodyResolveComponents.typeForQualifier(resolvedQualifier: FirResolvedQualifi
}
// TODO: Handle no value type here
return resultType.resolvedTypeFromPrototype(
StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
session.builtinTypes.unitType.type//StandardClassIds.Unit(symbolProvider).constructType(emptyArray(), isNullable = false)
)
}
@@ -28,19 +28,19 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, ConeTypeCo
override val isErrorTypeAllowed: Boolean get() = false
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 {
return StandardClassIds.Any(symbolProvider).constructType(emptyArray(), true)
return session.builtinTypes.nullableAnyType.type//StandardClassIds.Any(symbolProvider).constructType(emptyArray(), true)
}
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 {
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 {
@@ -72,7 +72,7 @@ internal object CreateFreshTypeVariableSubstitutorStage : ResolutionStage() {
is FirStarProjection -> csBuilder.addEqualityConstraint(
freshVariable.defaultType,
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
)
else -> assert(typeArgument == FirTypePlaceholderProjection) {
@@ -127,7 +127,7 @@ private fun extraLambdaInfo(
?: expectedType?.typeArguments?.singleOrNull()?.safeAs<ConeTypedProjection>()?.type?.takeIf { isFunctionSupertype }
?: 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 {
it.returnTypeRef.coneTypeSafe<ConeKotlinType>() ?: nothingType
} ?: emptyList()
@@ -166,7 +166,7 @@ private fun extractLambdaParameters(expectedType: ConeKotlinType, argument: FirA
val parameters = argument.valueParameters
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()) {
return expectedParameters.map { it?.type ?: nullableAnyType }
@@ -108,7 +108,7 @@ class PostponedArgumentsAnalyzer(
lambda: ResolvedLambdaAtom//,
//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 currentSubstitutor = c.buildCurrentSubstitutor(stubsForPostponedVariables.mapKeys { it.key.freshTypeConstructor(c) })
@@ -264,10 +264,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
.transformArguments(integerLiteralTypeApproximator, null)
when (resolved.operation) {
FirOperation.IS, FirOperation.NOT_IS -> {
resolved.resultType = FirResolvedTypeRefImpl(
null,
StandardClassIds.Boolean(symbolProvider).constructType(emptyArray(), isNullable = false)
)
resolved.resultType = session.builtinTypes.booleanType
}
FirOperation.AS -> {
resolved.resultType = resolved.conversionTypeRef
@@ -164,7 +164,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
require(this is ConeKotlinType)
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 {
@@ -514,7 +514,7 @@ class ConeTypeCheckerContext(
val substitution =
declaration.typeParameters.zip(type.typeArguments).associate { (parameter, argument) ->
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)
} else {