From 2f835ed66f0583cbcf92f05fd8842910f5d56f10 Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Mon, 6 May 2019 12:30:48 +0300 Subject: [PATCH] Specify type arguments to fix compilation against bootstrap compiler --- .../src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt | 2 +- .../src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt | 6 +++++- .../org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt | 4 ++-- .../org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt | 2 +- .../fir/resolve/transformers/FirBodyResolveTransformer.kt | 8 ++++---- .../fir/resolve/transformers/FirTypeResolveTransformer.kt | 7 ++----- .../src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt | 2 +- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 787adae5c72..b3b6a513bf8 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -762,7 +762,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) { } private fun typeParametersFromSelfType(delegatedSelfTypeRef: FirTypeRef): List { - return delegatedSelfTypeRef.coneTypeSafe() + return delegatedSelfTypeRef.coneTypeSafe() ?.typeArguments ?.map { ((it as ConeTypeParameterType).lookupTag as FirTypeParameterSymbol).fir } ?: emptyList() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt index b6060bda8fa..4bb74bfafce 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt @@ -38,7 +38,11 @@ fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession) // TODO: support LibraryTypeParameterSymbol or get rid of it val toSymbol = this.lookupTag.toSymbol(useSiteSession)?.takeIf { it is FirBasedSymbol<*> } ?: return null val fir = toSymbol.firUnsafe() - FirCompositeScope(fir.bounds.mapNotNullTo(mutableListOf()) { it.coneTypeUnsafe().scope(useSiteSession, scopeSession) }) + FirCompositeScope( + fir.bounds.mapNotNullTo(mutableListOf()) { + it.coneTypeUnsafe().scope(useSiteSession, scopeSession) + } + ) } is ConeFlexibleType -> lowerBound.scope(useSiteSession, scopeSession) else -> error("Failed type ${this}") diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt index 428bda63afd..7320de30bad 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt @@ -46,8 +46,8 @@ inline fun scopeSessionKey(): ScopeSessionKey { return object : ScopeSessionKey() {} } -val USE_SITE = scopeSessionKey() -val DECLARED = scopeSessionKey() +val USE_SITE = scopeSessionKey() +val DECLARED = scopeSessionKey() data class SubstitutionScopeKey(val type: ConeClassLikeType) : ScopeSessionKey() {} diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt index de8aef1612b..164d17abf0c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt @@ -149,7 +149,7 @@ internal fun FirExpression.getExpectedType( // parameter.type.unwrap() // } else { if (parameter.isVararg) { - parameter.returnTypeRef.coneTypeUnsafe().varargElementType(session) + parameter.returnTypeRef.coneTypeUnsafe().varargElementType(session) } else { parameter.returnTypeRef.coneTypeUnsafe() }//?.varargElementType?.unwrap() ?: parameter.type.unwrap() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index bb4b73ffd5d..5d8c7a2953d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -150,7 +150,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn resolved.resultType = resolved.conversionTypeRef.withReplacedConeType( session, - resolved.conversionTypeRef.coneTypeUnsafe().withNullability(ConeNullability.NULLABLE) + resolved.conversionTypeRef.coneTypeUnsafe().withNullability(ConeNullability.NULLABLE) ) } else -> error("Unknown type operator") @@ -193,7 +193,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn if (symbol is ConeCallableSymbol) { jump.tryCalculateReturnType(symbol.firUnsafe()) } else if (symbol is ConeClassifierSymbol) { - val firUnsafe = symbol.firUnsafe() + val firUnsafe = symbol.firUnsafe() // TODO: unhack if (firUnsafe is FirEnumEntry) { (firUnsafe.superTypeRefs.firstOrNull() as? FirResolvedTypeRef) ?: FirErrorTypeRefImpl( @@ -309,7 +309,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn val receiverTypeRef = anonymousFunction.receiverTypeRef fun transform(): FirAnonymousFunction { return withScopeCleanup(scopes) { - scopes.addIfNotNull(receiverTypeRef?.coneTypeSafe()?.scope(session, scopeSession)) + scopes.addIfNotNull(receiverTypeRef?.coneTypeSafe()?.scope(session, scopeSession)) val result = super.transformAnonymousFunction( anonymousFunction, @@ -648,7 +648,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn fun transform(): CompositeTransformResult { localScopes.lastOrNull()?.storeDeclaration(namedFunction) return withScopeCleanup(scopes) { - scopes.addIfNotNull(receiverTypeRef?.coneTypeSafe()?.scope(session, scopeSession)) + scopes.addIfNotNull(receiverTypeRef?.coneTypeSafe()?.scope(session, scopeSession)) val result = super.transformNamedFunction(namedFunction, namedFunction.returnTypeRef).single as FirNamedFunction diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index 27f09b7f688..4cfcd7a87bd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -13,10 +13,7 @@ import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes import org.jetbrains.kotlin.fir.scopes.FirPosition import org.jetbrains.kotlin.fir.scopes.addImportingScopes import org.jetbrains.kotlin.fir.scopes.impl.* -import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef -import org.jetbrains.kotlin.fir.types.FirTypeRef -import org.jetbrains.kotlin.fir.types.coneTypeUnsafe -import org.jetbrains.kotlin.fir.types.createArrayOf +import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.compose @@ -103,7 +100,7 @@ open class FirTypeResolveTransformer : FirAbstractTreeTransformerWithSuperTypes( if (valueParameter.isVararg) { val returnTypeRef = valueParameter.returnTypeRef - val returnType = returnTypeRef.coneTypeUnsafe() + val returnType = returnTypeRef.coneTypeUnsafe() valueParameter.transformReturnTypeRef( StoreType, valueParameter.returnTypeRef.withReplacedConeType( 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 b6def95b077..4cde3d9fadc 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 @@ -138,7 +138,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext { // TODO: get rid of class types with type-alias symbols if (typeConstructor is FirTypeAliasSymbol) { - return typeConstructor.fir.expandedTypeRef.coneTypeSafe()?.typeConstructor() + return typeConstructor.fir.expandedTypeRef.coneTypeSafe()?.typeConstructor() ?: ErrorTypeConstructor("Failed to expand alias: ${this}") } return typeConstructor