From dfa494a21e5fc713794410544bd8a8faa053f396 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 8 Oct 2019 10:04:27 +0300 Subject: [PATCH] FIR: remove duplicate of 'wrapSubstitutionScopeIfNeed' --- .../kotlin/fir/java/JavaSymbolProvider.kt | 2 +- .../kotlin/fir/resolve/ScopeUtils.kt | 23 +------------------ .../kotlin/fir/resolve/SupertypeUtils.kt | 4 ++-- 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 75b378972f2..1f4ebc2fc9e 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -99,7 +99,7 @@ class JavaSymbolProvider( if (symbol is FirClassSymbol && visitedSymbols.add(symbol)) { // We need JavaClassEnhancementScope here to have already enhanced signatures from supertypes val scope = buildJavaEnhancementScope(useSiteSession, symbol, scopeSession, visitedSymbols) - useSiteSuperType.wrapSubstitutionScopeIfNeed(useSiteSession, scope, scopeSession) + useSiteSuperType.wrapSubstitutionScopeIfNeed(useSiteSession, scope, symbol.fir, scopeSession) } else { null } 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 4c38aa62f9f..644716ba350 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 @@ -8,10 +8,7 @@ package org.jetbrains.kotlin.fir.resolve import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope -import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl @@ -24,7 +21,7 @@ fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession) is ConeClassLikeType -> { // TODO: for ConeClassLikeType they might be a type alias instead of a regular class val fir = this.lookupTag.toSymbol(useSiteSession)?.fir as? FirRegularClass ?: return null - wrapSubstitutionScopeIfNeed(useSiteSession, fir.buildUseSiteScope(useSiteSession, scopeSession)!!, scopeSession) + wrapSubstitutionScopeIfNeed(useSiteSession, fir.buildUseSiteScope(useSiteSession, scopeSession)!!, fir, scopeSession) } is ConeTypeParameterType -> { // TODO: support LibraryTypeParameterSymbol or get rid of it @@ -45,24 +42,6 @@ fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession) } } -fun ConeClassLikeType.wrapSubstitutionScopeIfNeed( - session: FirSession, - useSiteScope: FirScope, - builder: ScopeSession -): FirScope { - if (this.typeArguments.isEmpty()) return useSiteScope - val symbol = this.lookupTag.toSymbol(session) as? FirClassSymbol ?: return useSiteScope - val regularClass = symbol.fir - return builder.getOrBuild(symbol, SubstitutionScopeKey(this)) { - @Suppress("UNCHECKED_CAST") - val substitution = regularClass.typeParameters.zip(this.typeArguments) { typeParameter, typeArgument -> - typeParameter.symbol to (typeArgument as? ConeTypedProjection)?.type - }.filter { (_, type) -> type != null }.toMap() as Map - - FirClassSubstitutionScope(session, useSiteScope, builder, substitution) - } -} - fun FirRegularClass.defaultType(): ConeClassTypeImpl { return ConeClassTypeImpl( symbol.toLookupTag(), 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 ca529982d02..216d342254b 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 @@ -50,7 +50,7 @@ inline fun scopeSessionKey(): ScopeSessionKey { val USE_SITE = scopeSessionKey() val DECLARED = scopeSessionKey() -data class SubstitutionScopeKey(val type: ConeClassLikeType) : ScopeSessionKey() {} +data class SubstitutionScopeKey(val type: ConeClassLikeType) : ScopeSessionKey() {} fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope? { val symbolProvider = useSiteSession.firSymbolProvider @@ -83,7 +83,7 @@ fun FirRegularClass.buildDefaultUseSiteScope(useSiteSession: FirSession, builder } } -private fun ConeClassLikeType.wrapSubstitutionScopeIfNeed( +fun ConeClassLikeType.wrapSubstitutionScopeIfNeed( session: FirSession, useSiteScope: FirScope, declaration: FirClassLikeDeclaration<*>,