From 522aa1b3bb850c6c5da9d8291d8aa83e9b704c24 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 11 Oct 2022 22:26:05 +0200 Subject: [PATCH] [Low Level FIR] remove usages of ResolveTreeBuilder as it complicates the code but unused --- .../LowLevelFirApiFacadeForResolveOnAir.kt | 20 +-- ...solveTransformerForReturnTypeCalculator.kt | 17 +- .../api/fir/file/builder/LLFirLockProvider.kt | 7 +- .../LLFirModuleLazyDeclarationResolver.kt | 32 ++-- .../fir/lazy/resolve/ResolveTreeBuilder.kt | 155 ------------------ ...edAnnotationArgumentsMappingTransformer.kt | 7 +- ...edAnnotationArgumentsResolveTransformer.kt | 8 +- ...DesignatedAnnotationsResolveTransformed.kt | 7 +- .../LLFirDesignatedBodyResolveTransformer.kt | 8 +- ...irDesignatedContractsResolveTransformer.kt | 9 +- ...esignatedExpectActualMatcherTransformer.kt | 8 +- ...eratedCompanionObjectResolveTransformer.kt | 7 +- ...LLFirDesignatedImplicitTypesTransformer.kt | 8 +- ...LLFirDesignatedStatusResolveTransformer.kt | 9 +- ...rDesignatedSupertypeResolverTransformer.kt | 11 +- .../LLFirDesignatedTypeResolverTransformer.kt | 7 +- 16 files changed, 57 insertions(+), 263 deletions(-) delete mode 100644 analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/ResolveTreeBuilder.kt diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt index 438fddd359d..6c6a4b4d8a0 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt @@ -262,17 +262,15 @@ object LowLevelFirApiFacadeForResolveOnAir { declaration = copiedFirDeclaration, firFile = originalFirFile ) - ResolveTreeBuilder.resolveEnsure(onAirDesignation.declaration, FirResolvePhase.BODY_RESOLVE) { - val resolvableSession = onAirDesignation.declaration.llFirResolvableSession - ?: error("Expected resolvable session") - resolvableSession.moduleComponents.firModuleLazyDeclarationResolver - .runLazyDesignatedOnAirResolveToBodyWithoutLock( - designation = onAirDesignation, - checkPCE = true, - onAirCreatedDeclaration = onAirCreatedDeclaration, - towerDataContextCollector = collector, - ) - } + val resolvableSession = onAirDesignation.declaration.llFirResolvableSession + ?: error("Expected resolvable session") + resolvableSession.moduleComponents.firModuleLazyDeclarationResolver + .runLazyDesignatedOnAirResolveToBodyWithoutLock( + designation = onAirDesignation, + checkPCE = true, + onAirCreatedDeclaration = onAirCreatedDeclaration, + towerDataContextCollector = collector, + ) copiedFirDeclaration } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/LLFirDesignatedBodyResolveTransformerForReturnTypeCalculator.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/LLFirDesignatedBodyResolveTransformerForReturnTypeCalculator.kt index 4b4c4873f5a..311570bf1bd 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/LLFirDesignatedBodyResolveTransformerForReturnTypeCalculator.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/LLFirDesignatedBodyResolveTransformerForReturnTypeCalculator.kt @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignation import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder fun LLFirDesignatedImpliciteTypesBodyResolveTransformerForReturnTypeCalculator( designation: Iterator, @@ -80,13 +79,7 @@ private class LLFirDesignatedBodyResolveTransformerForReturnTypeCalculatorImpl( FirLazyBodiesCalculator.calculateLazyBodiesForFunction(it) } - return if (simpleFunction.returnTypeRef is FirResolvedTypeRef) { - super.transformSimpleFunction(simpleFunction, data) - } else { - return ResolveTreeBuilder.resolveReturnTypeCalculation(simpleFunction) { - super.transformSimpleFunction(simpleFunction, data) - } - } + return super.transformSimpleFunction(simpleFunction, data) } override fun transformProperty( @@ -96,12 +89,6 @@ private class LLFirDesignatedBodyResolveTransformerForReturnTypeCalculatorImpl( property.processCallable { FirLazyBodiesCalculator.calculateLazyBodyForProperty(it) } - return if (property.returnTypeRef is FirResolvedTypeRef) { - super.transformProperty(property, data) - } else { - return ResolveTreeBuilder.resolveReturnTypeCalculation(property) { - super.transformProperty(property, data) - } - } + return super.transformProperty(property, data) } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt index 0cf6c339271..4b9c9072d35 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder import org.jetbrains.kotlin.fir.declarations.FirFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.lockWithPCECheck import java.util.concurrent.locks.ReentrantLock import kotlin.concurrent.withLock @@ -19,14 +18,12 @@ internal class LLFirLockProvider { private val globalLock = ReentrantLock() inline fun withWriteLock(@Suppress("UNUSED_PARAMETER") key: FirFile, action: () -> R): R { - val startTime = System.currentTimeMillis() - return globalLock.withLock { ResolveTreeBuilder.lockNode(startTime, action) } + return globalLock.withLock { action() } } inline fun withWriteLockPCECheck(@Suppress("UNUSED_PARAMETER") key: FirFile, lockingIntervalMs: Long, action: () -> R): R { - val startTime = System.currentTimeMillis() - return globalLock.lockWithPCECheck(lockingIntervalMs) { ResolveTreeBuilder.lockNode(startTime, action) } + return globalLock.lockWithPCECheck(lockingIntervalMs) { action() } } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt index 0f43c515f28..e741081caef 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt @@ -132,15 +132,13 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod if (toPhase == FirResolvePhase.IMPORTS) return if (firFile.resolvePhase >= toPhase) return moduleComponents.globalResolveComponents.lockProvider.runCustomResolveUnderLock(firFile, checkPCE) { - ResolveTreeBuilder.resolveEnsure(firFile, toPhase) { - lazyResolveFileDeclarationWithoutLock( - firFile = firFile, - toPhase = toPhase, - collector = collector, - scopeSession = scopeSession, - checkPCE = checkPCE, - ) - } + lazyResolveFileDeclarationWithoutLock( + firFile = firFile, + toPhase = toPhase, + collector = collector, + scopeSession = scopeSession, + checkPCE = checkPCE, + ) } } catch (e: Throwable) { rethrowWithDetails(e, firFile, fromPhase, toPhase) @@ -345,15 +343,13 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod } moduleComponents.globalResolveComponents.lockProvider.runCustomResolveUnderLock(designation.firFile, checkPCE) { - ResolveTreeBuilder.resolveEnsure(designation.declaration, neededPhase) { - runLazyDesignatedResolveWithoutLock( - designation = designation, - scopeSession = scopeSession, - toPhase = neededPhase, - checkPCE = checkPCE, - ) - designation.declaration - } + runLazyDesignatedResolveWithoutLock( + designation = designation, + scopeSession = scopeSession, + toPhase = neededPhase, + checkPCE = checkPCE, + ) + designation.declaration } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/ResolveTreeBuilder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/ResolveTreeBuilder.kt deleted file mode 100644 index 796a4bc0e02..00000000000 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/ResolveTreeBuilder.kt +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2010-2021 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. - */ - -package org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve - -import org.jetbrains.kotlin.fir.declarations.FirDeclaration -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol -import java.io.File - -internal object ResolveTreeBuilder { - - private val file: File? by lazy(LazyThreadSafetyMode.PUBLICATION) { - System.getProperty("fir.lazy.resolve.dump")?.let { - File(it) - } - } - - class Context(var rootCall: Boolean = true, var underLock: Boolean = false, val builder: StringBuilder = StringBuilder()) - - val currentContext: ThreadLocal = ThreadLocal.withInitial { Context() } - - private fun FirResolvePhase.firPhaseName(): String = when (this) { - FirResolvePhase.RAW_FIR -> "Raw" - FirResolvePhase.IMPORTS -> "Imports" - FirResolvePhase.SUPER_TYPES -> "SuperTypes" - FirResolvePhase.TYPES -> "Types" - FirResolvePhase.STATUS -> "Status" - FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS -> "ArgumentsOfAnnotations" - FirResolvePhase.CONTRACTS -> "Contracts" - FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> "ImplicitTypes" - FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING -> "AnnotationsArgumentsMapping" - FirResolvePhase.BODY_RESOLVE -> "Body" - else -> "?" - } - - fun resolvePhase( - declaration: FirDeclaration, - phase: FirResolvePhase, - body: () -> Unit - ) { - newNodeContext { - resolveToDeclaration(declaration, "Phase", false, phase) { - body() - declaration - } - } - } - - fun resolveEnsure( - declaration: FirDeclaration, - phase: FirResolvePhase, - body: () -> Unit - ) { - newNodeContext { - resolveToDeclaration(declaration, "Ensure", true, phase) { - body() - declaration - } - } - } - - inline fun lockNode(startTime: Long, body: () -> T): T { - if (file == null) return body() - val waitEnd = System.currentTimeMillis() - val currentContext = currentContext.get() - val builderLength = currentContext.builder.length - val wasUnderLock = currentContext.underLock - currentContext.underLock = true - return newNodeContext { - try { - body() - } finally { - val contentionTime = waitEnd - startTime - val executionTime = System.currentTimeMillis() - waitEnd - if (!wasUnderLock && builderLength != currentContext.builder.length) { - val tag = "" - currentContext.builder.insert(builderLength, tag) - currentContext.builder.append("") - } - currentContext.underLock = wasUnderLock - } - } - } - - fun resolveReturnTypeCalculation( - declaration: FirDeclaration, - body: () -> T - ): T = newNodeContext { - resolveToDeclaration(declaration, "RTC", true, null, body) - } - - private fun FirDeclaration.toDeclarationName(): String = when (val symbol = symbol) { - is FirClassSymbol<*> -> symbol.classId.asSingleFqName().asString() - is FirCallableSymbol<*> -> symbol.callableId.asSingleFqName().asString() - is FirFileSymbol -> symbol.fir.name - else -> symbol::class.qualifiedName - } ?: "${this::class.qualifiedName}:${hashCode()}" - - private fun resolveToDeclaration( - declaration: FirDeclaration, - nodeName: String, - needWriteDeclarationName: Boolean, - phase: FirResolvePhase? = null, - body: () -> T - ): T { - if (phase != null && declaration.resolvePhase >= phase) return body() - - val currentContext = currentContext.get() - val currentPosition = currentContext.builder.length - var withException = true - val start = System.currentTimeMillis() - try { - return body().also { - withException = false - } - } finally { - val end = System.currentTimeMillis() - val timeAttr = " time=\"${end - start}\"" - val phaseAttr = if (phase != null) " phase=\"${phase.firPhaseName()}\"" else "" - val declarationAttr = if (needWriteDeclarationName) " declaration=\"${declaration.toDeclarationName()}\"" else "" - val exceptionAttr = if (withException) " withException=\"true\"" else "" - val nodeContent = "$declarationAttr$phaseAttr$timeAttr$exceptionAttr" - - if (currentPosition == currentContext.builder.length) { - currentContext.builder.append("<$nodeName$nodeContent />") - } else { - currentContext.builder.insert(currentPosition, "<$nodeName$nodeContent>") - currentContext.builder.append("") - } - } - } - - private inline fun newNodeContext(body: () -> T): T { - val dumpFile = file ?: return body() - val currentContext = currentContext.get() - val oldRootEnsure = currentContext.rootCall - try { - currentContext.rootCall = false - return body() - } finally { - currentContext.rootCall = oldRootEnsure - if (oldRootEnsure) { - synchronized(dumpFile) { - dumpFile.appendText(currentContext.builder.toString()) - } - currentContext.builder.clear() - } - } - } -} \ No newline at end of file diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsMappingTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsMappingTransformer.kt index 7f89a18f2e6..79f069d5437 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsMappingTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsMappingTransformer.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkAnnotationArgumentsMappingIsResolved import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase @@ -39,10 +38,8 @@ internal class LLFirDesignatedAnnotationArgumentsMappingTransformer( if (designation.declaration.resolvePhase >= FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING) return designation.declaration.checkPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING) { - designation.firFile.transform(this, ResolutionMode.ContextIndependent) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING) { + designation.firFile.transform(this, ResolutionMode.ContextIndependent) } updatePhaseDeep(designation.declaration, FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt index 9d542a8dc4a..868518b257c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry @@ -55,11 +54,10 @@ internal class LLFirDesignatedAnnotationArgumentsResolveTransformer( val designationIterator = designation.toSequenceWithFile(includeTarget = false).iterator() - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS) { - moveNextDeclaration(designationIterator) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS) { + moveNextDeclaration(designationIterator) } + LLFirLazyTransformer.updatePhaseDeep(designation.declaration, FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS) checkIsResolved(designation.declaration) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationsResolveTransformed.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationsResolveTransformed.kt index 63fb15ea4f8..448af3096fa 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationsResolveTransformed.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationsResolveTransformed.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* @@ -49,10 +48,8 @@ internal class LLFirDesignatedAnnotationsResolveTransformed( val designationIterator = designation.toSequenceWithFile(includeTarget = false).iterator() - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) { - moveNextDeclaration(designationIterator) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) { + moveNextDeclaration(designationIterator) } LLFirLazyTransformer.updatePhaseDeep(designation.declaration, FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedBodyResolveTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedBodyResolveTransformer.kt index 0995c0cb338..d30c063456c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedBodyResolveTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedBodyResolveTransformer.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.createReturnTy import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.LLFirEnsureBasedTransformerForReturnTypeCalculator -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase @@ -54,11 +53,10 @@ internal class LLFirDesignatedBodyResolveTransformer( if (designation.declaration.resolvePhase >= FirResolvePhase.BODY_RESOLVE) return designation.declaration.checkPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.BODY_RESOLVE) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.BODY_RESOLVE) { - designation.firFile.transform(this, ResolutionMode.ContextIndependent) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.BODY_RESOLVE) { + designation.firFile.transform(this, ResolutionMode.ContextIndependent) } + ideDeclarationTransformer.ensureDesignationPassed() updatePhaseDeep(designation.declaration, FirResolvePhase.BODY_RESOLVE, withNonLocalDeclarations = true) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedContractsResolveTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedContractsResolveTransformer.kt index 4c10428e28f..8b9c9012363 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedContractsResolveTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedContractsResolveTransformer.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclaration import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirAbstractContractResolveTransformerDispatcher @@ -49,12 +48,10 @@ internal class LLFirDesignatedContractsResolveTransformer( designation.declaration.checkPhase(FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS) FirLazyBodiesCalculator.calculateLazyBodiesInside(designation) - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.CONTRACTS) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.CONTRACTS) { - designation.firFile.transform(this, ResolutionMode.ContextIndependent) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.CONTRACTS) { + designation.firFile.transform(this, ResolutionMode.ContextIndependent) } - + ideDeclarationTransformer.ensureDesignationPassed() updatePhaseDeep(designation.declaration, FirResolvePhase.CONTRACTS) checkIsResolved(designation.declaration) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedExpectActualMatcherTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedExpectActualMatcherTransformer.kt index aef8a23f8c3..c6efbbeeb84 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedExpectActualMatcherTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedExpectActualMatcherTransformer.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase import org.jetbrains.kotlin.fir.FirSession @@ -42,11 +41,10 @@ internal class LLFirDesignatedExpectActualMatcherTransformer( designation.declaration.checkPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) FirLazyBodiesCalculator.calculateLazyBodiesInside(designation) - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.EXPECT_ACTUAL_MATCHING) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.EXPECT_ACTUAL_MATCHING) { - designation.firFile.transform(this, null) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.EXPECT_ACTUAL_MATCHING) { + designation.firFile.transform(this, null) } + declarationTransformer.ensureDesignationPassed() updatePhaseDeep(designation.declaration, FirResolvePhase.EXPECT_ACTUAL_MATCHING) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedGeneratedCompanionObjectResolveTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedGeneratedCompanionObjectResolveTransformer.kt index f7501432cd6..472d2555d9e 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedGeneratedCompanionObjectResolveTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedGeneratedCompanionObjectResolveTransformer.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -22,10 +21,8 @@ internal class LLFirDesignatedGeneratedCompanionObjectResolveTransformer( override fun transformDeclaration(phaseRunner: LLFirPhaseRunner) { if (designation.declaration.resolvePhase >= FirResolvePhase.COMPANION_GENERATION) return - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.COMPANION_GENERATION) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.COMPANION_GENERATION) { - designation.declaration.transform(transformer, null) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.COMPANION_GENERATION) { + designation.declaration.transform(transformer, null) } LLFirLazyTransformer.updatePhaseDeep(designation.declaration, FirResolvePhase.COMPANION_GENERATION) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedImplicitTypesTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedImplicitTypesTransformer.kt index 10890722a68..51504dbc23c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedImplicitTypesTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedImplicitTypesTransformer.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.createReturnTy import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.LLFirDesignatedImpliciteTypesBodyResolveTransformerForReturnTypeCalculator -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved @@ -54,11 +53,10 @@ internal class LLFirDesignatedImplicitTypesTransformer( if (designation.declaration.resolvePhase >= FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) return designation.declaration.checkPhase(FirResolvePhase.CONTRACTS) - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) { - designation.firFile.transform(this, ResolutionMode.ContextIndependent) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) { + designation.firFile.transform(this, ResolutionMode.ContextIndependent) } + ideDeclarationTransformer.ensureDesignationPassed() updatePhaseDeep(designation.declaration, FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedStatusResolveTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedStatusResolveTransformer.kt index debaf1a36ec..27d7aaf92a2 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedStatusResolveTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedStatusResolveTransformer.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirStatusResolveTransformer import org.jetbrains.kotlin.fir.resolve.transformers.StatusComputationSession import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeclarationStatusIsResolved import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase @@ -42,12 +41,10 @@ internal class LLFirDesignatedStatusResolveTransformer( designation.declaration.checkPhase(FirResolvePhase.TYPES) val transformer = FirDesignatedStatusResolveTransformerForIDE() - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.STATUS) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.STATUS) { - designation.firFile.transform(transformer, null) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.STATUS) { + designation.firFile.transform(transformer, null) } - + transformer.designationTransformer.ensureDesignationPassed() updatePhaseDeep(designation.declaration, FirResolvePhase.STATUS) checkIsResolved(designation.declaration) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt index 1d41680e7ca..0ba1b01594b 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignation import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.runCustomResolveUnderLock import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirModuleLazyDeclarationResolver -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirResolvableSession import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkCanceled @@ -145,12 +144,10 @@ internal class LLFirDesignatedSupertypeResolverTransformer( FirDeclarationDesignationWithFile(targetPath, resolvableTarget, designation.firFile) } else designation - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.SUPER_TYPES) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.SUPER_TYPES) { - val collected = collect(targetDesignation) - supertypeComputationSession.breakLoops(session) - apply(collected) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.SUPER_TYPES) { + val collected = collect(targetDesignation) + supertypeComputationSession.breakLoops(session) + apply(collected) } updatePhaseDeep(designation.declaration, FirResolvePhase.SUPER_TYPES) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedTypeResolverTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedTypeResolverTransformer.kt index 89b421cad7c..bc90d0d580a 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedTypeResolverTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedTypeResolverTransformer.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep import org.jetbrains.kotlin.analysis.low.level.api.fir.util.* import org.jetbrains.kotlin.fir.FirElement @@ -42,10 +41,8 @@ internal class LLFirDesignatedTypeResolverTransformer( if (designation.declaration.resolvePhase >= FirResolvePhase.TYPES) return designation.declaration.checkPhase(FirResolvePhase.SUPER_TYPES) - ResolveTreeBuilder.resolvePhase(designation.declaration, FirResolvePhase.TYPES) { - phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.TYPES) { - designation.firFile.transform(this, null) - } + phaseRunner.runPhaseWithCustomResolve(FirResolvePhase.TYPES) { + designation.firFile.transform(this, null) } declarationTransformer.ensureDesignationPassed()