[FIR] Don't create delegating constructor call to kotlin.Annotation

This commit is contained in:
Dmitriy Novozhilov
2019-12-04 18:23:58 +03:00
parent 25720e20f4
commit a0d8e5bde7
6 changed files with 18 additions and 12 deletions
@@ -397,7 +397,10 @@ class DeclarationsConverter(
isNullable = false
)
)
modifiers.isAnnotation() && (classKind == ClassKind.ANNOTATION_CLASS) -> implicitAnnotationType
modifiers.isAnnotation() && (classKind == ClassKind.ANNOTATION_CLASS) -> {
superTypeRefs += implicitAnnotationType
implicitAnyType
}
else -> implicitAnyType
}
@@ -352,7 +352,10 @@ class RawFirBuilder(session: FirSession, val stubMode: Boolean) : BaseFirBuilder
isNullable = false
)
)
this is KtClass && classKind == ClassKind.ANNOTATION_CLASS -> implicitAnnotationType
this is KtClass && classKind == ClassKind.ANNOTATION_CLASS -> {
container.superTypeRefs += implicitAnnotationType
implicitAnyType
}
else -> implicitAnyType
}
// TODO: for enum / annotations, it *should* be empty
@@ -1,7 +1,7 @@
FILE: annotated.kt
@Target(AnnotationTarget#.EXPRESSION#) @Retention(AnnotationRetention#.SOURCE#) public? final? annotation class Ann : R|kotlin/Annotation| {
public? constructor(): R|Ann| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
}
@@ -1,7 +1,7 @@
FILE: collectionLiterals.kt
public? final? annotation class Ann1 : R|kotlin/Annotation| {
public? constructor(arr: IntArray): R|Ann1| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
public? final? val arr: IntArray = R|<local>/arr|
@@ -10,7 +10,7 @@ FILE: collectionLiterals.kt
}
public? final? annotation class Ann2 : R|kotlin/Annotation| {
public? constructor(arr: DoubleArray): R|Ann2| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
public? final? val arr: DoubleArray = R|<local>/arr|
@@ -19,7 +19,7 @@ FILE: collectionLiterals.kt
}
public? final? annotation class Ann3 : R|kotlin/Annotation| {
public? constructor(arr: Array<String>): R|Ann3| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
public? final? val arr: Array<String> = R|<local>/arr|
@@ -1,7 +1,7 @@
FILE: annotations.kt
public final annotation class MyAnn : R|kotlin/Annotation| {
public constructor(): R|MyAnn| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
}
@@ -1,13 +1,13 @@
FILE: annotations.kt
@R|kotlin/annotation/Target|(Q|kotlin/annotation/AnnotationTarget.FILE|, Q|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget.PROPERTY_GETTER|) public final annotation class Simple : R|kotlin/Annotation| {
public constructor(): R|annotations/Simple| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
}
public final annotation class WithInt : R|kotlin/Annotation| {
public constructor(value: R|kotlin/Int|): R|annotations/WithInt| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
public final val value: R|kotlin/Int| = R|<local>/value|
@@ -16,7 +16,7 @@ FILE: annotations.kt
}
public final annotation class WithString : R|kotlin/Annotation| {
public constructor(s: R|kotlin/String|): R|annotations/WithString| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
public final val s: R|kotlin/String| = R|<local>/s|
@@ -25,7 +25,7 @@ FILE: annotations.kt
}
public final annotation class Complex : R|kotlin/Annotation| {
public constructor(wi: R|annotations/WithInt|, ws: R|annotations/WithString|): R|annotations/Complex| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
public final val wi: R|annotations/WithInt| = R|<local>/wi|
@@ -37,7 +37,7 @@ FILE: annotations.kt
}
public final annotation class VeryComplex : R|kotlin/Annotation| {
public constructor(f: R|kotlin/Float|, d: R|kotlin/Double|, b: R|kotlin/Boolean|, l: R|kotlin/Long|, n: R|kotlin/Int?|): R|annotations/VeryComplex| {
super<R|kotlin/Annotation|>()
super<R|kotlin/Any|>()
}
public final val f: R|kotlin/Float| = R|<local>/f|