FIR: optimize classifier scope: don't search for nonexistent symbols
This commit is contained in:
@@ -93,7 +93,11 @@ class JavaSymbolProvider(
|
||||
visitedSymbols: MutableSet<FirClassLikeSymbol<*>>
|
||||
): JavaClassUseSiteMemberScope {
|
||||
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
|
||||
val declaredScope = declaredMemberScope(regularClass, useLazyNestedClassifierScope = regularClass is FirJavaClass)
|
||||
val declaredScope = declaredMemberScope(
|
||||
regularClass,
|
||||
useLazyNestedClassifierScope = regularClass is FirJavaClass,
|
||||
existingNames = (regularClass as? FirJavaClass)?.existingNestedClassifierNames
|
||||
)
|
||||
val superTypeEnhancementScopes =
|
||||
lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession)
|
||||
.mapNotNull { useSiteSuperType ->
|
||||
@@ -184,7 +188,8 @@ class JavaSymbolProvider(
|
||||
javaClass.visibility, javaClass.modality,
|
||||
javaClass.classKind, isTopLevel = isTopLevel,
|
||||
isStatic = javaClass.isStatic,
|
||||
javaTypeParameterStack = javaTypeParameterStack
|
||||
javaTypeParameterStack = javaTypeParameterStack,
|
||||
existingNestedClassifierNames = javaClass.innerClassNames.toList()
|
||||
).apply {
|
||||
this.typeParameters += foundClass.typeParameters.convertTypeParameters(javaTypeParameterStack)
|
||||
addAnnotationsFrom(this@JavaSymbolProvider.session, javaClass, javaTypeParameterStack)
|
||||
|
||||
@@ -37,7 +37,8 @@ class FirJavaClass internal constructor(
|
||||
override val classKind: ClassKind,
|
||||
isTopLevel: Boolean,
|
||||
isStatic: Boolean,
|
||||
internal val javaTypeParameterStack: JavaTypeParameterStack
|
||||
internal val javaTypeParameterStack: JavaTypeParameterStack,
|
||||
internal val existingNestedClassifierNames: List<Name>
|
||||
) : FirPureAbstractElement(), FirRegularClass, FirModifiableClass<FirRegularClass> {
|
||||
override var status: FirDeclarationStatusImpl = FirDeclarationStatusImpl(visibility, modality)
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
|
||||
Reference in New Issue
Block a user