[LL FIR] avoid ClassId computation to check isLocal
This commit is contained in:
+5
-4
@@ -51,16 +51,17 @@ internal fun FirDeclaration.getKtDeclarationForFirElement(): KtDeclaration {
|
|||||||
|
|
||||||
internal fun declarationCanBeLazilyResolved(declaration: KtDeclaration): Boolean = when (declaration) {
|
internal fun declarationCanBeLazilyResolved(declaration: KtDeclaration): Boolean = when (declaration) {
|
||||||
is KtDestructuringDeclarationEntry, is KtFunctionLiteral, is KtTypeParameter -> false
|
is KtDestructuringDeclarationEntry, is KtFunctionLiteral, is KtTypeParameter -> false
|
||||||
is KtPrimaryConstructor -> (declaration.parent as? KtClassOrObject)?.getClassId() != null
|
is KtPrimaryConstructor -> (declaration.parent as? KtClassOrObject)?.isLocal == false
|
||||||
is KtParameter -> declaration.hasValOrVar() && declaration.containingClassOrObject?.getClassId() != null
|
is KtParameter -> declaration.hasValOrVar() && declaration.containingClassOrObject?.isLocal == false
|
||||||
is KtCallableDeclaration, is KtEnumEntry, is KtClassInitializer -> {
|
is KtCallableDeclaration, is KtEnumEntry, is KtClassInitializer -> {
|
||||||
when (val parent = declaration.parent) {
|
when (val parent = declaration.parent) {
|
||||||
is KtFile -> true
|
is KtFile -> true
|
||||||
is KtClassBody -> (parent.parent as? KtClassOrObject)?.getClassId() != null
|
is KtClassBody -> (parent.parent as? KtClassOrObject)?.isLocal == false
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
!is KtNamedDeclaration -> false
|
!is KtNamedDeclaration -> false
|
||||||
is KtClassLikeDeclaration -> declaration.getClassId() != null
|
is KtClassOrObject -> !declaration.isLocal
|
||||||
|
is KtTypeAlias -> declaration.isTopLevel() || declaration.getClassId() != null
|
||||||
else -> error("Unexpected ${declaration::class.qualifiedName}")
|
else -> error("Unexpected ${declaration::class.qualifiedName}")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user