From 348c9664c1ac2b4dccdf97f88a2f612dec4c5c7a Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 5 Feb 2024 14:31:52 +0100 Subject: [PATCH] [LL FIR] drop isScriptDependentDeclaration Now this property is redundant ^KT-65344 --- .../low/level/api/fir/api/FirDesignation.kt | 7 ------- .../api/fir/lazy/resolve/LLFirPhaseUpdater.kt | 8 ++------ .../LLFirCompilerAnnotationsLazyResolver.kt | 3 --- .../LLFirImplicitTypesLazyResolver.kt | 10 ++-------- .../low/level/api/fir/util/declarationUtils.kt | 15 ++++----------- .../level/api/fir/util/firCheckResolvedUtils.kt | 5 ++--- 6 files changed, 10 insertions(+), 38 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt index 99a7c0ba6f1..2441e1a6f82 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt @@ -11,14 +11,12 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryOrLi import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getContainingFile import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isLocalForLazyResolutionPurposes -import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isScriptDependentDeclaration import org.jetbrains.kotlin.analysis.low.level.api.fir.util.unwrapCopy import org.jetbrains.kotlin.analysis.project.structure.DanglingFileResolutionMode import org.jetbrains.kotlin.analysis.project.structure.KtDanglingFileModule import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError import org.jetbrains.kotlin.builtins.StandardNames -import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty @@ -355,11 +353,6 @@ private fun FirDeclaration.scriptDesignation(): FirDesignation? { val firFile = firScriptSymbol.fir.getContainingFile() ?: return null FirDesignation(path = listOf(firFile), target = firScriptSymbol.fir) } - isScriptDependentDeclaration -> { - val firFile = getContainingFile() ?: return null - val firScript = firFile.declarations.singleOrNull() as? FirScript ?: return null - FirDesignation(path = listOf(firFile), target = firScript) - } else -> null } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirPhaseUpdater.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirPhaseUpdater.kt index d7e71a31db9..91bd96187f5 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirPhaseUpdater.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirPhaseUpdater.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isElementWhichShouldBeResolvedAsPartOfScript -import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isScriptDependentDeclaration import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.declarations.* @@ -81,10 +80,7 @@ internal object LLFirPhaseUpdater { private object PhaseUpdatingTransformer : FirVisitor() { override fun visitElement(element: FirElement, data: FirResolvePhase) { if (element is FirElementWithResolveState) { - if (element.resolvePhase >= data && - element !is FirDefaultPropertyAccessor && - !(element is FirDeclaration && element.isScriptDependentDeclaration) - ) return + if (element.resolvePhase >= data && element !is FirDefaultPropertyAccessor) return @OptIn(ResolveStateAccess::class) element.resolveState = data.asResolveState() diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt index 0d13a50ba71..1ad912fecfc 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodie import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeprecationProviderIsResolved import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration -import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isScriptDependentDeclaration import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.FirElementWithResolveState @@ -318,8 +317,6 @@ private fun FirAnnotationContainer.hasAnnotationsToResolve(): Boolean { is FirProperty -> this.getter?.hasAnnotationsToResolve() == true || this.setter?.hasAnnotationsToResolve() == true || this.backingField?.hasAnnotationsToResolve() == true - - is FirScript -> declarations.any { it.isScriptDependentDeclaration && it.hasAnnotationsToResolve() } else -> false } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirImplicitTypesLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirImplicitTypesLazyResolver.kt index ebf72d01097..3f42dbaf2d8 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirImplicitTypesLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirImplicitTypesLazyResolver.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockPro import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.LLFirDeclarationModificationService import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration -import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isScriptDependentDeclaration import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer import org.jetbrains.kotlin.fir.declarations.* @@ -199,12 +198,6 @@ internal class LLFirImplicitBodyTargetResolver( } } - target is FirScript -> { - if (target.declarations.any { it.isScriptDependentDeclaration }) { - resolve(target, BodyStateKeepers.SCRIPT) - } - } - target is FirRegularClass || target is FirTypeAlias || target is FirFile || @@ -213,7 +206,8 @@ internal class LLFirImplicitBodyTargetResolver( target is FirDanglingModifierList || target is FirFileAnnotationsContainer || target is FirEnumEntry || - target is FirErrorProperty + target is FirErrorProperty || + target is FirScript -> { // No implicit bodies here } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt index d96635cb05b..77c4f0d5580 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLoc import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousDeclaration import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirProvider -import org.jetbrains.kotlin.analysis.utils.printer.parentOfType import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.psi @@ -229,10 +228,7 @@ internal inline fun FirDeclaration.forEachDeclaration(action: (FirDeclaration) - } } -internal val FirDeclaration.isElementWhichShouldBeResolvedAsPartOfScript: Boolean get() = this is FirAnonymousInitializer || isScriptDependentDeclaration - -internal val FirDeclaration.isScriptDependentDeclaration: Boolean - get() = false +internal val FirDeclaration.isElementWhichShouldBeResolvedAsPartOfScript: Boolean get() = this is FirAnonymousInitializer /** * Some "local" declarations are not local from the lazy resolution perspective. @@ -245,11 +241,8 @@ internal val FirCallableSymbol<*>.isLocalForLazyResolutionPurposes: Boolean else -> callableId.isLocal || fir.status.visibility == Visibilities.Local } -internal inline fun FirScript.forEachDependentDeclaration(action: (FirDeclaration) -> Unit) { - for (declaration in declarations) { - if (declaration is FirAnonymousInitializer || !declaration.isScriptDependentDeclaration) continue - action(declaration) - } +internal inline fun FirScript.forEachDependentDeclaration(@Suppress("unused") action: (FirDeclaration) -> Unit) { + } val PsiElement.parentsWithSelfCodeFragmentAware: Sequence diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt index 2f6f0ee4bbb..6bfb4d6713e 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -114,8 +114,7 @@ internal fun checkStatementsAreResolved(script: FirScript) { } } for (declaration in script.declarations) { - if (declaration.isScriptDependentDeclaration) { - } else if (declaration is FirAnonymousInitializer) { + if (declaration is FirAnonymousInitializer) { declaration.body?.statements?.filterIsInstance()?.forEach(::checkExpression) } }