From 614291b2cc46aa8b2ff9dd8b8e3e5d3bbcc7e039 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 21 Jul 2020 13:23:27 +0300 Subject: [PATCH] [FIR] Make FirAnnotationCall resolvable --- .../kotlin/fir/expressions/FirAnnotationCall.kt | 8 +++++++- .../expressions/builder/FirAnnotationCallBuilder.kt | 3 +++ .../fir/expressions/impl/FirAnnotationCallImpl.kt | 13 +++++++++++++ .../kotlin/fir/tree/generator/FirTreeBuilder.kt | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt index 493a76bf6a9..14452fc4010 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -15,11 +16,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirAnnotationCall : FirExpression(), FirCall { +abstract class FirAnnotationCall : FirExpression(), FirCall, FirResolvable { abstract override val source: FirSourceElement? abstract override val typeRef: FirTypeRef abstract override val annotations: List abstract override val argumentList: FirArgumentList + abstract override val calleeReference: FirReference abstract val useSiteTarget: AnnotationUseSiteTarget? abstract val annotationTypeRef: FirTypeRef abstract val resolveStatus: FirAnnotationResolveStatus @@ -30,9 +32,13 @@ abstract class FirAnnotationCall : FirExpression(), FirCall { abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract fun replaceResolveStatus(newResolveStatus: FirAnnotationResolveStatus) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnnotationCall + abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirAnnotationCall + abstract fun transformAnnotationTypeRef(transformer: FirTransformer, data: D): FirAnnotationCall } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirAnnotationCallBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirAnnotationCallBuilder.kt index 7a5b1ae8c4d..754c6b1e1a1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirAnnotationCallBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirAnnotationCallBuilder.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirEmptyArgumentList import org.jetbrains.kotlin.fir.expressions.builder.FirCallBuilder import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder import org.jetbrains.kotlin.fir.expressions.impl.FirAnnotationCallImpl +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -30,6 +31,7 @@ class FirAnnotationCallBuilder : FirCallBuilder, FirAnnotationContainerBuilder, override var source: FirSourceElement? = null override val annotations: MutableList = mutableListOf() override var argumentList: FirArgumentList = FirEmptyArgumentList + lateinit var calleeReference: FirReference var useSiteTarget: AnnotationUseSiteTarget? = null lateinit var annotationTypeRef: FirTypeRef var resolveStatus: FirAnnotationResolveStatus = FirAnnotationResolveStatus.Unresolved @@ -39,6 +41,7 @@ class FirAnnotationCallBuilder : FirCallBuilder, FirAnnotationContainerBuilder, source, annotations, argumentList, + calleeReference, useSiteTarget, annotationTypeRef, resolveStatus, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt index 6902dfd4b67..899fff5803d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationResolveStatus import org.jetbrains.kotlin.fir.expressions.FirArgumentList +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -22,6 +23,7 @@ internal class FirAnnotationCallImpl( override val source: FirSourceElement?, override val annotations: MutableList, override var argumentList: FirArgumentList, + override var calleeReference: FirReference, override val useSiteTarget: AnnotationUseSiteTarget?, override var annotationTypeRef: FirTypeRef, override var resolveStatus: FirAnnotationResolveStatus, @@ -31,12 +33,14 @@ internal class FirAnnotationCallImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } argumentList.accept(visitor, data) + calleeReference.accept(visitor, data) annotationTypeRef.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirAnnotationCallImpl { transformAnnotations(transformer, data) argumentList = argumentList.transformSingle(transformer, data) + transformCalleeReference(transformer, data) transformAnnotationTypeRef(transformer, data) return this } @@ -46,6 +50,11 @@ internal class FirAnnotationCallImpl( return this } + override fun transformCalleeReference(transformer: FirTransformer, data: D): FirAnnotationCallImpl { + calleeReference = calleeReference.transformSingle(transformer, data) + return this + } + override fun transformAnnotationTypeRef(transformer: FirTransformer, data: D): FirAnnotationCallImpl { annotationTypeRef = annotationTypeRef.transformSingle(transformer, data) return this @@ -57,6 +66,10 @@ internal class FirAnnotationCallImpl( argumentList = newArgumentList } + override fun replaceCalleeReference(newCalleeReference: FirReference) { + calleeReference = newCalleeReference + } + override fun replaceResolveStatus(newResolveStatus: FirAnnotationResolveStatus) { resolveStatus = newResolveStatus } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index 0d921af2486..8b49e9b8ecd 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -83,7 +83,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val typeProjectionWithVariance = element("TypeProjectionWithVariance", TypeRef, typeProjection) val argumentList = element("ArgumentList", Expression) val call = element("Call", Expression, statement) // TODO: may smth like `CallWithArguments` or `ElementWithArguments`? - val annotationCall = element("AnnotationCall", Expression, expression, call) + val annotationCall = element("AnnotationCall", Expression, expression, call, resolvable) val comparisonExpression = element("ComparisonExpression", Expression, expression) val typeOperatorCall = element("TypeOperatorCall", Expression, expression, call) val assignmentOperatorStatement = element("AssignmentOperatorStatement", Expression, statement)