From 0fb883ef628595c40eccad77418c31aa151d52c7 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Wed, 11 Dec 2019 23:06:09 +0300 Subject: [PATCH] [FIR] Use builtinTypes instead of creating new ones --- .../src/org/jetbrains/kotlin/fir/FirCallResolver.kt | 2 +- .../src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt | 2 +- .../kotlin/fir/resolve/calls/ConeInferenceContext.kt | 8 ++++---- .../calls/CreateFreshTypeVariableSubstitutorStage.kt | 2 +- .../kotlin/fir/resolve/calls/PostponedArguments.kt | 4 ++-- .../fir/resolve/calls/PostponedArgumentsAnalyzer.kt | 2 +- .../body/resolve/FirExpressionsResolveTransformer.kt | 5 +---- .../src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt | 4 ++-- 8 files changed, 13 insertions(+), 16 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt index 7ec355a763f..208d8f6f1ce 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt @@ -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) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index 9ef706ea87f..1c5c5c6190a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -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) ) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt index b074c3b4055..46895675ad8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt @@ -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 { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CreateFreshTypeVariableSubstitutorStage.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CreateFreshTypeVariableSubstitutorStage.kt index 21412c7138d..6d1ac3cb9db 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CreateFreshTypeVariableSubstitutorStage.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CreateFreshTypeVariableSubstitutorStage.kt @@ -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) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArguments.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArguments.kt index 54228109441..bfab399a405 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArguments.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArguments.kt @@ -127,7 +127,7 @@ private fun extraLambdaInfo( ?: expectedType?.typeArguments?.singleOrNull()?.safeAs()?.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() ?: 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 } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArgumentsAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArgumentsAnalyzer.kt index b0f9ab42c03..a4e2aedafbd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArgumentsAnalyzer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/PostponedArgumentsAnalyzer.kt @@ -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) }) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 781aea232b4..387ca2fbf14 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -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 diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index a4cb358729f..adf28885d39 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -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 {