FIR: Optimize supertypes scope structure
This commit is contained in:
@@ -121,7 +121,7 @@ class JavaSymbolProvider(
|
||||
}
|
||||
JavaClassUseSiteMemberScope(
|
||||
regularClass, useSiteSession,
|
||||
FirSuperTypeScope(
|
||||
FirSuperTypeScope.prepareSupertypeScope(
|
||||
useSiteSession,
|
||||
JavaOverrideChecker(
|
||||
useSiteSession, if (regularClass is FirJavaClass) regularClass
|
||||
|
||||
@@ -18,7 +18,9 @@ import org.jetbrains.kotlin.fir.scopes.impl.FirStandardOverrideChecker
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirSuperTypeScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope
|
||||
import org.jetbrains.kotlin.fir.scopes.jvm.JvmMappedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.*
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTagWithFixedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
@@ -110,7 +112,7 @@ abstract class FirSymbolProvider : FirSessionComponent {
|
||||
}
|
||||
FirClassUseSiteMemberScope(
|
||||
useSiteSession,
|
||||
FirSuperTypeScope(useSiteSession, FirStandardOverrideChecker(useSiteSession), scopes),
|
||||
FirSuperTypeScope.prepareSupertypeScope(useSiteSession, FirStandardOverrideChecker(useSiteSession), scopes),
|
||||
wrappedDeclaredScope
|
||||
)
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class FirSuperTypeScope(
|
||||
class FirSuperTypeScope private constructor(
|
||||
session: FirSession,
|
||||
overrideChecker: FirOverrideChecker,
|
||||
val scopes: List<FirScope>
|
||||
@@ -112,4 +112,16 @@ class FirSuperTypeScope(
|
||||
}
|
||||
return super.processClassifiersByName(name, processor)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun prepareSupertypeScope(
|
||||
session: FirSession,
|
||||
overrideChecker: FirOverrideChecker,
|
||||
scopes: List<FirScope>
|
||||
): FirScope {
|
||||
scopes.singleOrNull()?.let { return it }
|
||||
|
||||
return FirSuperTypeScope(session, overrideChecker, scopes)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user