FIR: make FirNestedClassifierScopeWithSubstitution to be name aware

This commit is contained in:
Ilya Kirillov
2020-12-31 16:25:40 +01:00
parent c2866152bf
commit 008260451c
@@ -9,8 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.isInner import org.jetbrains.kotlin.fir.declarations.isInner
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.resolve.transformers.createSubstitutionForSupertype import org.jetbrains.kotlin.fir.resolve.transformers.createSubstitutionForSupertype
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.*
import org.jetbrains.kotlin.fir.scopes.getSingleClassifier
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -18,7 +17,7 @@ import org.jetbrains.kotlin.name.Name
private class FirNestedClassifierScopeWithSubstitution( private class FirNestedClassifierScopeWithSubstitution(
private val scope: FirScope, private val scope: FirScope,
private val substitutor: ConeSubstitutor private val substitutor: ConeSubstitutor
) : FirScope() { ) : FirScope(), FirContainingNamesAwareScope {
override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) {
scope.processFunctionsByName(name, processor) scope.processFunctionsByName(name, processor)
@@ -41,6 +40,9 @@ private class FirNestedClassifierScopeWithSubstitution(
val substitutor = substitutor.takeIf { matchedClass.fir.isInner } ?: ConeSubstitutor.Empty val substitutor = substitutor.takeIf { matchedClass.fir.isInner } ?: ConeSubstitutor.Empty
processor(matchedClass, substitutor) processor(matchedClass, substitutor)
} }
override fun getCallableNames(): Set<Name> = scope.getContainingCallableNamesIfPresent()
override fun getClassifierNames(): Set<Name> = scope.getContainingClassifierNamesIfPresent()
} }
fun FirScope.wrapNestedClassifierScopeWithSubstitutionForSuperType( fun FirScope.wrapNestedClassifierScopeWithSubstitutionForSuperType(