[LL FIR] avoid ClassId computation to check isLocal

This commit is contained in:
Dmitrii Gridin
2023-06-17 12:31:41 +02:00
parent 56bebeaf92
commit fc7712148e
@@ -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}")
} }