[LL FIR] unify annotation transformers
^KT-56550
This commit is contained in:
committed by
Space Team
parent
5ebba92a6e
commit
a429367890
+1
-11
@@ -72,16 +72,6 @@ private class LLFirAnnotationArgumentsMappingTargetResolver(
|
||||
|
||||
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
||||
FirLazyBodiesCalculator.calculateAnnotations(target)
|
||||
when (target) {
|
||||
is FirRegularClass -> {
|
||||
target.transformAnnotations(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
target.transformTypeParameters(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
target.transformSuperTypeRefs(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
}
|
||||
is FirCallableDeclaration, is FirAnonymousInitializer, is FirDanglingModifierList, is FirFileAnnotationsContainer, is FirTypeAlias, is FirScript -> {
|
||||
target.transformSingle(transformer, ResolutionMode.ContextIndependent)
|
||||
}
|
||||
else -> throwUnexpectedFirElementError(target)
|
||||
}
|
||||
transformer.transformAnnotations(target)
|
||||
}
|
||||
}
|
||||
|
||||
+30
-11
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirAnnotationArgumentsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
@@ -83,16 +84,34 @@ private class LLFirAnnotationArgumentsTargetResolver(
|
||||
|
||||
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
||||
FirLazyBodiesCalculator.calculateAnnotations(target)
|
||||
when (target) {
|
||||
is FirRegularClass -> {
|
||||
target.transformAnnotations(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
target.transformTypeParameters(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
target.transformSuperTypeRefs(transformer.declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
}
|
||||
is FirCallableDeclaration, is FirAnonymousInitializer, is FirDanglingModifierList, is FirFileAnnotationsContainer, is FirTypeAlias, is FirScript -> {
|
||||
target.transformSingle(transformer, ResolutionMode.ContextIndependent)
|
||||
}
|
||||
else -> throwUnexpectedFirElementError(target)
|
||||
}
|
||||
transformer.transformAnnotations(target)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun FirAbstractBodyResolveTransformerDispatcher.transformAnnotations(target: FirElementWithResolveState) {
|
||||
when {
|
||||
target is FirRegularClass -> {
|
||||
target.transformAnnotations(declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
target.transformTypeParameters(declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
target.transformSuperTypeRefs(declarationsTransformer, ResolutionMode.ContextIndependent)
|
||||
}
|
||||
|
||||
target.isRegularDeclarationWithAnnotation -> {
|
||||
target.transformSingle(this, ResolutionMode.ContextIndependent)
|
||||
}
|
||||
|
||||
else -> throwUnexpectedFirElementError(target)
|
||||
}
|
||||
}
|
||||
|
||||
internal val FirElementWithResolveState.isRegularDeclarationWithAnnotation: Boolean
|
||||
get() = when (this) {
|
||||
is FirCallableDeclaration,
|
||||
is FirAnonymousInitializer,
|
||||
is FirDanglingModifierList,
|
||||
is FirFileAnnotationsContainer,
|
||||
is FirTypeAlias,
|
||||
is FirScript,
|
||||
-> true
|
||||
else -> false
|
||||
}
|
||||
+14
-9
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignationWithFile
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarget
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirPhaseUpdater
|
||||
@@ -15,11 +16,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||
import org.jetbrains.kotlin.fir.declarations.resolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.CompilerRequiredAnnotationsComputationSession
|
||||
@@ -97,11 +94,13 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
||||
|
||||
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
||||
FirLazyBodiesCalculator.calculateCompilerAnnotations(target)
|
||||
when (target) {
|
||||
is FirTypeAlias -> {
|
||||
|
||||
when {
|
||||
target is FirTypeAlias -> {
|
||||
transformer.transformTypeAlias(target, null)
|
||||
}
|
||||
is FirRegularClass -> {
|
||||
|
||||
target is FirRegularClass -> {
|
||||
transformer.annotationTransformer.resolveRegularClass(
|
||||
target,
|
||||
transformChildren = {
|
||||
@@ -112,6 +111,12 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
target.isRegularDeclarationWithAnnotation -> {
|
||||
|
||||
}
|
||||
|
||||
else -> throwUnexpectedFirElementError(target)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user