[FIR] drop obsolete FirResolveContextCollector

This interface is unused
This commit is contained in:
Dmitrii Gridin
2024-02-17 23:18:42 +01:00
committed by Space Team
parent 2e17d8d524
commit 80b698ce32
28 changed files with 27 additions and 239 deletions
@@ -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.
*/
@@ -28,7 +28,6 @@ abstract class FirAbstractBodyResolveTransformerDispatcher(
scopeSession: ScopeSession,
val returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve.Default,
outerBodyResolveContext: BodyResolveContext? = null,
val firResolveContextCollector: FirResolveContextCollector? = null,
) : FirAbstractBodyResolveTransformer(phase) {
open val preserveCFGForClasses: Boolean get() = !implicitTypeOnly
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 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.
*/
@@ -18,7 +18,6 @@ open class FirBodyResolveTransformer(
scopeSession: ScopeSession,
returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve.Default,
outerBodyResolveContext: BodyResolveContext? = null,
firResolveContextCollector: FirResolveContextCollector? = null
) : FirAbstractBodyResolveTransformerDispatcher(
session,
phase,
@@ -26,7 +25,6 @@ open class FirBodyResolveTransformer(
scopeSession,
returnTypeCalculator,
outerBodyResolveContext,
firResolveContextCollector
) {
final override val expressionsTransformer = FirExpressionsResolveTransformer(this)
final override val declarationsTransformer = FirDeclarationsResolveTransformer(this)
@@ -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.
*/
@@ -77,7 +77,6 @@ open class FirDeclarationsResolveTransformer(
}
protected fun transformDeclarationContent(declaration: FirDeclaration, data: ResolutionMode): FirDeclaration {
transformer.firResolveContextCollector?.addDeclarationContext(declaration, context)
return transformer.transformDeclarationContent(declaration, data)
}
@@ -678,7 +677,7 @@ open class FirDeclarationsResolveTransformer(
context.withContainingClass(regularClass) {
val isLocal = regularClass.isLocal
if (isLocal && regularClass !in context.targetedLocalClasses) {
return regularClass.runAllPhasesForLocalClass(components, data, transformer.firResolveContextCollector)
return regularClass.runAllPhasesForLocalClass(components, data)
}
if (isLocal || !implicitTypeOnly) {
@@ -724,14 +723,13 @@ open class FirDeclarationsResolveTransformer(
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: ResolutionMode): FirTypeAlias = whileAnalysing(session, typeAlias) {
if (implicitTypeOnly) return typeAlias
if (typeAlias.isLocal && typeAlias !in context.targetedLocalClasses) {
return typeAlias.runAllPhasesForLocalClass(components, data, transformer.firResolveContextCollector)
return typeAlias.runAllPhasesForLocalClass(components, data)
}
@OptIn(PrivateForInline::class)
context.withContainer(typeAlias) {
doTransformTypeParameters(typeAlias)
typeAlias.transformAnnotations(transformer, data)
transformer.firResolveContextCollector?.addDeclarationContext(typeAlias, context)
typeAlias.transformExpandedTypeRef(transformer, data)
}
@@ -742,8 +740,6 @@ open class FirDeclarationsResolveTransformer(
file: FirFile,
data: ResolutionMode,
): FirFile = withFile(file) {
transformer.firResolveContextCollector?.addFileContext(file, context.towerDataContext)
transformDeclarationContent(file, data) as FirFile
}
@@ -798,7 +794,7 @@ open class FirDeclarationsResolveTransformer(
): FirAnonymousObject = whileAnalysing(session, anonymousObject) {
context.withContainingClass(anonymousObject) {
if (anonymousObject !in context.targetedLocalClasses) {
return anonymousObject.runAllPhasesForLocalClass(components, data, transformer.firResolveContextCollector)
return anonymousObject.runAllPhasesForLocalClass(components, data)
}
require(anonymousObject.controlFlowGraphReference == null)
@@ -895,7 +891,6 @@ open class FirDeclarationsResolveTransformer(
val bodyResolved = function.bodyResolved
dataFlowAnalyzer.enterFunction(function)
transformer.firResolveContextCollector?.addDeclarationContext(function, context)
if (shouldResolveEverything) {
// Annotations here are required only in the case of a local class member function.
// Separate annotation transformers are responsible in the case of non-local functions.
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2020 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.
*/
@@ -558,7 +558,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
data
else
ResolutionMode.ContextIndependent
collectStatementContext(block.statements[index])
TransformData.Data(value)
}
block.transformOtherChildren(transformer, data)
@@ -573,10 +573,6 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
dataFlowAnalyzer.exitBlock(block)
}
private fun collectStatementContext(statement: FirStatement) {
transformer.firResolveContextCollector?.addStatementContext(statement, context)
}
override fun transformThisReceiverExpression(
thisReceiverExpression: FirThisReceiverExpression,
data: ResolutionMode,
@@ -994,7 +990,6 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
return binaryLogicExpression.also(dataFlowAnalyzer::enterBinaryLogicExpression)
.transformLeftOperand(this, ResolutionMode.WithExpectedType(booleanType))
.also(dataFlowAnalyzer::exitLeftBinaryLogicExpressionArgument)
.also { collectStatementContext(it.rightOperand) }
.transformRightOperand(this, ResolutionMode.WithExpectedType(booleanType))
.also(dataFlowAnalyzer::exitBinaryLogicExpression)
.transformOtherChildren(transformer, ResolutionMode.WithExpectedType(booleanType))
@@ -73,8 +73,7 @@ class FirImplicitTypeBodyResolveTransformerAdapter(session: FirSession, scopeSes
fun <F : FirClassLikeDeclaration> F.runContractAndBodiesResolutionForLocalClass(
components: FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents,
resolutionMode: ResolutionMode,
localClassesNavigationInfo: LocalClassesNavigationInfo,
firResolveContextCollector: FirResolveContextCollector? = null
localClassesNavigationInfo: LocalClassesNavigationInfo
): F {
val currentReturnTypeCalculator = components.context.returnTypeCalculator as? ReturnTypeCalculatorWithJump
val prevDesignation = currentReturnTypeCalculator?.designationMapForLocalClasses ?: emptyMap()
@@ -106,7 +105,6 @@ fun <F : FirClassLikeDeclaration> F.runContractAndBodiesResolutionForLocalClass(
implicitTypeOnly = false,
returnTypeCalculator,
outerBodyResolveContext = newContext,
firResolveContextCollector = firResolveContextCollector,
)
return this.transform(transformer, resolutionMode)
@@ -120,7 +118,6 @@ open class FirImplicitAwareBodyResolveTransformer(
implicitTypeOnly: Boolean,
returnTypeCalculator: ReturnTypeCalculatorWithJump,
outerBodyResolveContext: BodyResolveContext? = null,
firResolveContextCollector: FirResolveContextCollector? = null,
) : FirBodyResolveTransformer(
session,
phase,
@@ -128,7 +125,6 @@ open class FirImplicitAwareBodyResolveTransformer(
scopeSession,
returnTypeCalculator,
outerBodyResolveContext,
firResolveContextCollector
) {
override fun transformForeignAnnotationCall(symbol: FirBasedSymbol<*>, annotationCall: FirAnnotationCall): FirAnnotationCall {
val outerTransformer = (returnTypeCalculator as ReturnTypeCalculatorWithJump).outerTransformer
@@ -1,38 +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.fir.resolve.transformers.body.resolve
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirTowerDataContext
import org.jetbrains.kotlin.fir.expressions.FirStatement
/**
* Collector needed to collect TowerDataContext in IDE for in-air resolved fir elements.
*/
interface FirResolveContextCollector {
fun addFileContext(file: FirFile, context: FirTowerDataContext)
fun addStatementContext(statement: FirStatement, context: BodyResolveContext)
fun addDeclarationContext(declaration: FirDeclaration, context: BodyResolveContext)
/**
* Here by "header" we understand the parts of the class declaration which resolution is not affected
* by the class own supertypes.
*
* It includes any type reference mentioned before the body of the class, except for:
* - primary constructor declaration with annotations
* - super type constructor **value arguments** with annotations
*
* Also, it includes class type parameters, because they are available anywhere inside the class declaration.
*
* N.B. We collect header contexts only for [FirRegularClass]es, ignoring
* [org.jetbrains.kotlin.fir.declarations.FirAnonymousObject]s. That's because anonymous objects are in
* fact expressions, and it should be enough for [FirTowerDataContextCollector] to have a context for
* the containing declaration to correctly process everything inside anonymous objects.
*/
fun addClassHeaderContext(declaration: FirRegularClass, context: FirTowerDataContext)
}
@@ -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.
*/
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.runTypeResolvePhaseForLocal
fun <F : FirClassLikeDeclaration> F.runAllPhasesForLocalClass(
components: FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents,
resolutionMode: ResolutionMode,
firResolveContextCollector: FirResolveContextCollector?
): F {
if (status is FirResolvedDeclarationStatus) return this
if (this is FirRegularClass) {
@@ -64,7 +63,6 @@ fun <F : FirClassLikeDeclaration> F.runAllPhasesForLocalClass(
components,
resolutionMode,
localClassesNavigationInfo,
firResolveContextCollector
)
return this
}
@@ -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.
*/
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveCon
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
@@ -43,7 +42,6 @@ abstract class FirAbstractContractResolveTransformerDispatcher(
session: FirSession,
scopeSession: ScopeSession,
outerBodyResolveContext: BodyResolveContext? = null,
firResolveContextCollector: FirResolveContextCollector? = null,
) : FirAbstractBodyResolveTransformerDispatcher(
session,
FirResolvePhase.CONTRACTS,
@@ -51,7 +49,6 @@ abstract class FirAbstractContractResolveTransformerDispatcher(
scopeSession,
returnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve.Contract,
outerBodyResolveContext = outerBodyResolveContext,
firResolveContextCollector = firResolveContextCollector,
) {
final override val expressionsTransformer: FirExpressionsResolveTransformer =
FirExpressionsResolveTransformer(this)
@@ -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.
*/
@@ -13,12 +13,10 @@ class FirContractResolveTransformer(
session: FirSession,
scopeSession: ScopeSession,
outerBodyResolveContext: BodyResolveContext? = null,
firResolveContextCollector: FirResolveContextCollector? = null,
) : FirAbstractContractResolveTransformerDispatcher(
session,
scopeSession,
outerBodyResolveContext,
firResolveContextCollector,
) {
override val contractDeclarationsTransformer: FirDeclarationsContractResolveTransformer
get() = FirDeclarationsContractResolveTransformer()
@@ -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.
*/
@@ -38,7 +38,6 @@ open class FirAnnotationArgumentsTransformer(
resolvePhase: FirResolvePhase,
outerBodyResolveContext: BodyResolveContext? = null,
returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve.Default,
firResolveContextCollector: FirResolveContextCollector? = null,
) : FirAbstractBodyResolveTransformerDispatcher(
session,
resolvePhase,
@@ -46,7 +45,6 @@ open class FirAnnotationArgumentsTransformer(
scopeSession,
outerBodyResolveContext = outerBodyResolveContext,
returnTypeCalculator = returnTypeCalculator,
firResolveContextCollector = firResolveContextCollector,
) {
final override val expressionsTransformer: FirExpressionsResolveTransformer = FirExpressionTransformerForAnnotationArguments(this)