From 4adda4220685e527487a212c44761fb17a716726 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Mon, 3 Jul 2023 17:51:45 +0200 Subject: [PATCH] KTIJ-26024 [FIR] Expose original scope from `FirNestedClassifierScopeWithSubstitution` Access to the original scope is required for the KtFirReferenceShortener to correctly compare the scopes between each other --- ...FirNestedClassifierScopeWithSubstitution.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt index 1dabb20fabe..739aebeac1a 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt @@ -16,37 +16,37 @@ import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.name.Name class FirNestedClassifierScopeWithSubstitution internal constructor( - private val scope: FirContainingNamesAwareScope, + val originalScope: FirContainingNamesAwareScope, private val substitutor: ConeSubstitutor ) : FirContainingNamesAwareScope() { override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { - scope.processFunctionsByName(name, processor) + originalScope.processFunctionsByName(name, processor) } override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) { - scope.processPropertiesByName(name, processor) + originalScope.processPropertiesByName(name, processor) } override fun processDeclaredConstructors(processor: (FirConstructorSymbol) -> Unit) { - scope.processDeclaredConstructors(processor) + originalScope.processDeclaredConstructors(processor) } override fun mayContainName(name: Name): Boolean { - return scope.mayContainName(name) + return originalScope.mayContainName(name) } override fun processClassifiersByNameWithSubstitution(name: Name, processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit) { - val matchedClass = scope.getSingleClassifier(name) as? FirRegularClassSymbol ?: return + val matchedClass = originalScope.getSingleClassifier(name) as? FirRegularClassSymbol ?: return val substitutor = substitutor.takeIf { matchedClass.fir.isInner } ?: ConeSubstitutor.Empty processor(matchedClass, substitutor) } - override fun getCallableNames(): Set = scope.getCallableNames() - override fun getClassifierNames(): Set = scope.getClassifierNames() + override fun getCallableNames(): Set = originalScope.getCallableNames() + override fun getClassifierNames(): Set = originalScope.getClassifierNames() override val scopeOwnerLookupNames: List - get() = scope.scopeOwnerLookupNames + get() = originalScope.scopeOwnerLookupNames } fun FirContainingNamesAwareScope.wrapNestedClassifierScopeWithSubstitutionForSuperType(