[LL FIR] rewrite on-air resolve
Now we will resolve declarations only ones and to the minimal required phase to get a fully resolved element depends on an insert position, because not all elements require body resolution A side change: `getOnAirGetTowerContextProvider` now won't do rebind to the original declaration. In the future, this part will be rewritten to avoid on-air resolution, so it is not a problem ^KT-59685 Fixed
This commit is contained in:
committed by
Space Team
parent
61acd2b6f5
commit
6867dffff1
+22
-2
@@ -228,6 +228,23 @@ open class PsiRawFirBuilder(
|
||||
context
|
||||
)
|
||||
|
||||
open fun convertPropertyAccessor(
|
||||
accessor: KtPropertyAccessor?,
|
||||
property: KtProperty,
|
||||
propertyTypeRef: FirTypeRef,
|
||||
propertySymbol: FirPropertySymbol,
|
||||
isGetter: Boolean,
|
||||
accessorAnnotationsFromProperty: List<FirAnnotation>,
|
||||
parameterAnnotationsFromProperty: List<FirAnnotation>,
|
||||
): FirPropertyAccessor? = accessor.toFirPropertyAccessor(
|
||||
property,
|
||||
propertyTypeRef,
|
||||
propertySymbol,
|
||||
isGetter,
|
||||
accessorAnnotationsFromProperty,
|
||||
parameterAnnotationsFromProperty,
|
||||
)
|
||||
|
||||
open fun convertValueParameter(
|
||||
valueParameter: KtParameter,
|
||||
functionSymbol: FirFunctionSymbol<*>,
|
||||
@@ -1914,7 +1931,8 @@ open class PsiRawFirBuilder(
|
||||
propertyAnnotations.filter { it.useSiteTarget == FIELD || it.useSiteTarget == PROPERTY_DELEGATE_FIELD },
|
||||
)
|
||||
|
||||
getter = this@toFirProperty.getter.toFirPropertyAccessor(
|
||||
getter = convertPropertyAccessor(
|
||||
this@toFirProperty.getter,
|
||||
this@toFirProperty,
|
||||
propertyType,
|
||||
propertySymbol = symbol,
|
||||
@@ -1922,7 +1940,9 @@ open class PsiRawFirBuilder(
|
||||
accessorAnnotationsFromProperty = propertyAnnotations.filterUseSiteTarget(PROPERTY_GETTER),
|
||||
parameterAnnotationsFromProperty = emptyList()
|
||||
)
|
||||
setter = this@toFirProperty.setter.toFirPropertyAccessor(
|
||||
|
||||
setter = convertPropertyAccessor(
|
||||
this@toFirProperty.setter,
|
||||
this@toFirProperty,
|
||||
propertyType,
|
||||
propertySymbol = symbol,
|
||||
|
||||
+4
@@ -19,6 +19,8 @@ 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.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
|
||||
open class FirAnnotationArgumentsMappingTransformer(
|
||||
@@ -27,6 +29,7 @@ open class FirAnnotationArgumentsMappingTransformer(
|
||||
resolvePhase: FirResolvePhase,
|
||||
outerBodyResolveContext: BodyResolveContext? = null,
|
||||
returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve,
|
||||
firResolveContextCollector: FirResolveContextCollector? = null,
|
||||
) : FirAbstractBodyResolveTransformerDispatcher(
|
||||
session,
|
||||
resolvePhase,
|
||||
@@ -34,6 +37,7 @@ open class FirAnnotationArgumentsMappingTransformer(
|
||||
scopeSession,
|
||||
outerBodyResolveContext = outerBodyResolveContext,
|
||||
returnTypeCalculator = returnTypeCalculator,
|
||||
firResolveContextCollector = firResolveContextCollector,
|
||||
) {
|
||||
final override val expressionsTransformer: FirExpressionsResolveTransformer =
|
||||
FirExpressionTransformerForAnnotationArgumentsMapping(this)
|
||||
|
||||
+3
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguouslyResolvedAnnotationArgument
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -38,6 +39,7 @@ open class FirAnnotationArgumentsResolveTransformer(
|
||||
resolvePhase: FirResolvePhase,
|
||||
outerBodyResolveContext: BodyResolveContext? = null,
|
||||
returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve,
|
||||
firResolveContextCollector: FirResolveContextCollector? = null,
|
||||
) : FirAbstractBodyResolveTransformerDispatcher(
|
||||
session,
|
||||
resolvePhase,
|
||||
@@ -45,6 +47,7 @@ open class FirAnnotationArgumentsResolveTransformer(
|
||||
scopeSession,
|
||||
outerBodyResolveContext = outerBodyResolveContext,
|
||||
returnTypeCalculator = returnTypeCalculator,
|
||||
firResolveContextCollector = firResolveContextCollector,
|
||||
) {
|
||||
final override val expressionsTransformer: FirExpressionsResolveTransformer =
|
||||
FirExpressionsResolveTransformerForSpecificAnnotations(this)
|
||||
|
||||
Reference in New Issue
Block a user