[FIR] do not ignore nested type aliases in FirNestedClassifierScope
This commit is contained in:
+10
-6
@@ -8,11 +8,13 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutorByMap
|
||||
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
@@ -21,7 +23,7 @@ import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
abstract class FirNestedClassifierScope(val klass: FirClass, val useSiteSession: FirSession) : FirContainingNamesAwareScope() {
|
||||
protected abstract fun getNestedClassSymbol(name: Name): FirRegularClassSymbol?
|
||||
protected abstract fun getNestedClassSymbol(name: Name): FirClassLikeSymbol<*>?
|
||||
|
||||
override fun processClassifiersByNameWithSubstitution(
|
||||
name: Name,
|
||||
@@ -40,17 +42,19 @@ abstract class FirNestedClassifierScope(val klass: FirClass, val useSiteSession:
|
||||
}
|
||||
|
||||
class FirNestedClassifierScopeImpl(klass: FirClass, useSiteSession: FirSession) : FirNestedClassifierScope(klass, useSiteSession) {
|
||||
private val classIndex: Map<Name, FirRegularClassSymbol> = run {
|
||||
val result = mutableMapOf<Name, FirRegularClassSymbol>()
|
||||
private val classIndex: Map<Name, FirClassLikeSymbol<*>> = run {
|
||||
val result = mutableMapOf<Name, FirClassLikeSymbol<*>>()
|
||||
for (declaration in klass.declarations) {
|
||||
if (declaration is FirRegularClass) {
|
||||
result[declaration.name] = declaration.symbol
|
||||
when (declaration) {
|
||||
is FirRegularClass -> result[declaration.name] = declaration.symbol
|
||||
is FirTypeAlias -> result[declaration.name] = declaration.symbol
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
result
|
||||
}
|
||||
|
||||
override fun getNestedClassSymbol(name: Name): FirRegularClassSymbol? {
|
||||
override fun getNestedClassSymbol(name: Name): FirClassLikeSymbol<*>? {
|
||||
return classIndex[name]
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user