From 65d14ff0979de242ae59919c47670732631e297d Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 17 Jun 2019 14:00:45 +0300 Subject: [PATCH] FIR: do not try to calculate annotation call type Annotation type is used instead --- .../fir/resolve/transformers/FirBodyResolveTransformer.kt | 1 - .../jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt | 4 ++-- .../kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt | 7 +++++++ .../kotlin/fir/visitors/FirTransformerGenerated.kt | 8 ++++---- .../jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt | 8 ++++---- .../kotlin/fir/visitors/FirVisitorVoidGenerated.kt | 8 ++++---- 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index b5193323c8e..60d7315a72b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -858,7 +858,6 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn } override fun transformAnnotationCall(annotationCall: FirAnnotationCall, data: Any?): CompositeTransformResult { - annotationCall.resultType = annotationCall.annotationTypeRef return (annotationCall.transformChildren(this, data) as FirStatement).compose() } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt index 023bf35b64a..461ad7a3eb6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.expressions import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.expressions.impl.FirUnknownTypeCallWithArgumentList +import org.jetbrains.kotlin.fir.expressions.impl.FirCallWithArgumentList import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.name.FqName abstract class FirAnnotationCall( session: FirSession, psi: PsiElement? -) : FirUnknownTypeCallWithArgumentList(session, psi) { +) : FirCallWithArgumentList(session, psi) { abstract val annotationTypeRef: FirTypeRef // May be should be not-null (with correct default target) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt index 622092ea53f..d68d4740096 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnnotationCallImpl.kt @@ -20,6 +20,13 @@ class FirAnnotationCallImpl( override val useSiteTarget: AnnotationUseSiteTarget?, override var annotationTypeRef: FirTypeRef ) : FirAnnotationCall(session, psi) { + override val typeRef: FirTypeRef + get() = annotationTypeRef + + override fun replaceTypeRef(newTypeRef: FirTypeRef) { + throw AssertionError("Attempt to replace type ref for annotation call") + } + override fun transformChildren(transformer: FirTransformer, data: D): FirElement { annotationTypeRef = annotationTypeRef.transformSingle(transformer, data) diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt index 510fa142a29..58f709fa641 100644 --- a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirTransformerGenerated.kt @@ -196,6 +196,10 @@ abstract class FirTransformer : FirVisitor { + return transformCallWithArgumentList(annotationCall, data) + } + open fun transformDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): CompositeTransformResult { return transformCallWithArgumentList(delegatedConstructorCall, data) } @@ -220,10 +224,6 @@ abstract class FirTransformer : FirVisitor { - return transformUnknownTypeCallWithArgumentList(annotationCall, data) - } - open fun transformArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): CompositeTransformResult { return transformUnknownTypeCallWithArgumentList(arrayOfCall, data) } diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt index 28435ed25ca..4a15f71b362 100644 --- a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorGenerated.kt @@ -196,6 +196,10 @@ abstract class FirVisitor { return visitCall(callWithArgumentList, data) } + open fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): R { + return visitCallWithArgumentList(annotationCall, data) + } + open fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): R { return visitCallWithArgumentList(delegatedConstructorCall, data) } @@ -220,10 +224,6 @@ abstract class FirVisitor { return visitCallWithArgumentList(unknownTypeCallWithArgumentList, data) } - open fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): R { - return visitUnknownTypeCallWithArgumentList(annotationCall, data) - } - open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): R { return visitUnknownTypeCallWithArgumentList(arrayOfCall, data) } diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt index 09e42f02cf7..bea282b39a7 100644 --- a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/FirVisitorVoidGenerated.kt @@ -196,6 +196,10 @@ abstract class FirVisitorVoid : FirVisitor() { visitCall(callWithArgumentList, null) } + open fun visitAnnotationCall(annotationCall: FirAnnotationCall) { + visitCallWithArgumentList(annotationCall, null) + } + open fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall) { visitCallWithArgumentList(delegatedConstructorCall, null) } @@ -220,10 +224,6 @@ abstract class FirVisitorVoid : FirVisitor() { visitCallWithArgumentList(unknownTypeCallWithArgumentList, null) } - open fun visitAnnotationCall(annotationCall: FirAnnotationCall) { - visitUnknownTypeCallWithArgumentList(annotationCall, null) - } - open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall) { visitUnknownTypeCallWithArgumentList(arrayOfCall, null) }