[LL FIR] drop forEachDependentDeclaration

Now this function is redundant

^KT-65344
This commit is contained in:
Dmitrii Gridin
2024-02-05 14:55:19 +01:00
committed by Space Team
parent 5de5f70ec9
commit 697f1477fd
10 changed files with 3 additions and 64 deletions
@@ -12,7 +12,6 @@ import kotlinx.collections.immutable.toPersistentList
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.withFirDesignationEntry
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
@@ -668,10 +667,6 @@ private object FirTargetLazyAnnotationCalculatorTransformer : FirLazyAnnotationT
override fun transformScript(script: FirScript, data: FirLazyAnnotationTransformerData): FirScript {
script.transformAnnotations(this, data)
script.forEachDependentDeclaration {
it.transformSingle(this, data)
}
return script
}
@@ -5,7 +5,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.fir.FirElement
import org.jetbrains.kotlin.fir.FirElementWithResolveState
@@ -64,7 +63,6 @@ internal object LLFirPhaseUpdater {
}
when (element) {
is FirScript -> element.forEachDependentDeclaration { updatePhaseForNonLocals(it, newPhase, isTargetDeclaration = false) }
is FirFunction -> element.valueParameters.forEach { updatePhaseForNonLocals(it, newPhase, isTargetDeclaration = false) }
is FirProperty -> {
element.getter?.let { updatePhaseForNonLocals(it, newPhase, isTargetDeclaration = false) }
@@ -12,7 +12,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.AnnotationVisitorVoid
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkAnnotationsAreResolved
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.*
@@ -193,16 +192,7 @@ private class LLFirAnnotationArgumentsTargetResolver(
}
}
target is FirScript -> {
target.transformAnnotations(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
transformer.declarationsTransformer.withScript(target) {
target.forEachDependentDeclaration {
it.transformSingle(transformer, ResolutionMode.ContextIndependent)
}
target
}
}
target is FirScript -> target.transformAnnotations(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
target.isRegularDeclarationWithAnnotation -> target.transformSingle(transformer, ResolutionMode.ContextIndependent)
target is FirCodeFragment || target is FirFile -> {}
else -> throwUnexpectedFirElementError(target)
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockPro
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator
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.utils.errors.requireIsInstance
import org.jetbrains.kotlin.fir.FirAnnotationContainer
import org.jetbrains.kotlin.fir.FirElementWithResolveState
@@ -244,8 +243,6 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
target.setter?.let(::publishResult)
target.backingField?.let(::publishResult)
}
is FirScript -> target.forEachDependentDeclaration(::publishResult)
}
}
}
@@ -268,10 +265,6 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
setter?.annotationsForTransformationTo(map)
backingField?.annotationsForTransformationTo(map)
}
is FirScript -> {
forEachDependentDeclaration { it.annotationsForTransformationTo(map) }
}
}
if (annotations.isEmpty()) return
@@ -10,13 +10,11 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirEle
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
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.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.isCopyCreatedInScope
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitAwareBodyResolveTransformer
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
@@ -27,7 +25,6 @@ import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
import org.jetbrains.kotlin.fir.util.setMultimapOf
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
import org.jetbrains.kotlin.fir.utils.exceptions.withFirSymbolEntry
import org.jetbrains.kotlin.fir.visitors.transformSingle
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
@@ -227,20 +224,7 @@ internal class LLFirImplicitBodyTargetResolver(
}
override fun rawResolve(target: FirElementWithResolveState) {
when {
target is FirScript -> {
transformer.declarationsTransformer.withScript(target) {
target.forEachDependentDeclaration {
it.transformSingle(transformer, ResolutionMode.ContextIndependent)
}
target
}
}
else -> super.rawResolve(target)
}
super.rawResolve(target)
LLFirDeclarationModificationService.bodyResolved(target, resolverPhase)
}
}
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveT
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirPhaseUpdater
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
import org.jetbrains.kotlin.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -54,7 +53,6 @@ internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
checkFunctionParametersAreResolved(target)
checkVariableSubDeclarationsAreResolved(target)
checkTypeParametersAreResolved(target)
checkScriptDependentDeclarationsAreResolved(target)
}
private fun checkVariableSubDeclarationsAreResolved(declaration: FirDeclaration) {
@@ -81,10 +79,4 @@ internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
checkIsResolved(parameter)
}
}
private fun checkScriptDependentDeclarationsAreResolved(declaration: FirDeclaration) {
if (declaration !is FirScript) return
declaration.forEachDependentDeclaration(::checkIsResolved)
}
}
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignation
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeclarationStatusIsResolved
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
import org.jetbrains.kotlin.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
@@ -189,8 +188,7 @@ private class LLFirStatusTargetResolver(
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
when (target) {
is FirRegularClass -> error("should be resolved in doResolveWithoutLock")
// It is fine to call status transformer under lock, because declarations can't have a containing class
is FirScript -> target.forEachDependentDeclaration { it.transformSingle(transformer, data = null) }
is FirScript -> {}
else -> target.transformSingle(transformer, data = null)
}
}
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReceiverTypeRef
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
import org.jetbrains.kotlin.fir.FirAnnotationContainer
import org.jetbrains.kotlin.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
@@ -181,7 +180,6 @@ private class LLFirTypeTargetResolver(
private fun resolveScriptTypes(firScript: FirScript) {
firScript.annotations.forEach { it.accept(transformer, null) }
firScript.contextReceivers.forEach { it.accept(transformer, null) }
firScript.forEachDependentDeclaration { it.accept(transformer, null) }
}
private fun resolveClassTypes(firClass: FirRegularClass) {
@@ -5,13 +5,11 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isLocalForLazyResolutionPurposes
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
import org.jetbrains.kotlin.fir.declarations.FirScript
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
@@ -70,9 +68,6 @@ internal fun FirBasedSymbol<*>.cannotResolveAnnotationsOnDemand(): Boolean {
internal fun FirDeclaration.forEachDeclarationWhichCanHavePostponedSymbols(action: (FirCallableDeclaration) -> Unit) {
when (this) {
is FirCallableDeclaration -> action(this)
is FirScript -> forEachDependentDeclaration {
it.forEachDeclarationWhichCanHavePostponedSymbols(action)
}
else -> {}
}
}
@@ -241,10 +241,6 @@ internal val FirCallableSymbol<*>.isLocalForLazyResolutionPurposes: Boolean
else -> callableId.isLocal || fir.status.visibility == Visibilities.Local
}
internal inline fun FirScript.forEachDependentDeclaration(@Suppress("unused") action: (FirDeclaration) -> Unit) {
}
val PsiElement.parentsWithSelfCodeFragmentAware: Sequence<PsiElement>
get() = generateSequence(this) { element ->
when (element) {