[AA] KT-56617 Optimize type parameter access for Java class symbols
- Completion accesses symbol type parameters to render their names. Instead of building the whole list of type parameters, and consequently the whole FIR class, completion can now access the type parameter names directly.
This commit is contained in:
committed by
Space Team
parent
77e374db77
commit
d5933f28ab
+12
-1
@@ -97,6 +97,16 @@ internal class KtFirPsiJavaClassSymbol(
|
||||
psi.containingClass?.let { KtFirPsiJavaClassSymbol(it, analysisSession) }
|
||||
}
|
||||
|
||||
override val typeParameterNames: List<Name> by cached {
|
||||
// The parent Java class might contribute `FirOuterClassTypeParameterRef`s to the FIR class's type parameters (see
|
||||
// `FirJavaFacade.createFirJavaClass`), but since they are filtered out by `createRegularKtTypeParameters`, we do not need to
|
||||
// include them in the list of type parameter names.
|
||||
javaClass.typeParameters.map { it.name }
|
||||
}
|
||||
|
||||
val hasTypeParameters: Boolean
|
||||
get() = withValidityAssertion { javaClass.typeParameters.isNotEmpty() }
|
||||
|
||||
override val isData: Boolean get() = withValidityAssertion { false }
|
||||
override val isInline: Boolean get() = withValidityAssertion { false }
|
||||
override val isFun: Boolean get() = withValidityAssertion { false }
|
||||
@@ -137,7 +147,8 @@ internal class KtFirPsiJavaClassSymbol(
|
||||
}
|
||||
|
||||
override val typeParameters: List<KtTypeParameterSymbol> by cached {
|
||||
firSymbol.createRegularKtTypeParameters(builder)
|
||||
if (hasTypeParameters) firSymbol.createRegularKtTypeParameters(builder)
|
||||
else emptyList()
|
||||
}
|
||||
|
||||
override val annotationsList: KtAnnotationsList by cached {
|
||||
|
||||
Reference in New Issue
Block a user