[FIR] Support several annotation class diagnostics

This commit is contained in:
Mikhail Likholetov
2020-05-20 21:40:24 +03:00
committed by Mikhail Glukhikh
parent c112d37ac1
commit 80cd26c9df
11 changed files with 223 additions and 29 deletions
@@ -0,0 +1,23 @@
class Foo
enum class Enum {
Bar
}
annotation class Ann1(
val p1: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Array<Int><!>,
val p2: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Array<Int?><!>,
val p3: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Array<IntArray><!>,
val p4: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Array<Foo><!>,
val p5: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Foo<!>,
vararg val p6: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Class<*><!>
)
annotation class Ann2(
val p1: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>Int?<!>,
val p2: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>String?<!>,
val p3: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>IntArray?<!>,
val p4: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>Array<Int>?<!>,
val p5: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>Ann1?<!>,
val p6: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>Enum?<!>
)
@@ -0,0 +1,68 @@
FILE: typeOfAnnotationMember.kt
public final class Foo : R|kotlin/Any| {
public constructor(): R|Foo| {
super<R|kotlin/Any|>()
}
}
public final enum class Enum : R|kotlin/Enum<Enum>| {
private constructor(): R|Enum| {
super<R|kotlin/Enum<Enum>|>()
}
public final static enum entry Bar: R|Enum|
public final static fun values(): R|kotlin/Array<Enum>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Enum| {
}
}
public final annotation class Ann1 : R|kotlin/Annotation| {
public constructor(p1: R|kotlin/Array<kotlin/Int>|, p2: R|kotlin/Array<kotlin/Int?>|, p3: R|kotlin/Array<kotlin/IntArray>|, p4: R|kotlin/Array<Foo>|, p5: R|Foo|, vararg p6: R|kotlin/Array<out java/lang/Class<*>>|): R|Ann1| {
super<R|kotlin/Any|>()
}
public final val p1: R|kotlin/Array<kotlin/Int>| = R|<local>/p1|
public get(): R|kotlin/Array<kotlin/Int>|
public final val p2: R|kotlin/Array<kotlin/Int?>| = R|<local>/p2|
public get(): R|kotlin/Array<kotlin/Int?>|
public final val p3: R|kotlin/Array<kotlin/IntArray>| = R|<local>/p3|
public get(): R|kotlin/Array<kotlin/IntArray>|
public final val p4: R|kotlin/Array<Foo>| = R|<local>/p4|
public get(): R|kotlin/Array<Foo>|
public final val p5: R|Foo| = R|<local>/p5|
public get(): R|Foo|
public final val p6: R|kotlin/Array<out java/lang/Class<*>>| = R|<local>/p6|
public get(): R|kotlin/Array<out java/lang/Class<*>>|
}
public final annotation class Ann2 : R|kotlin/Annotation| {
public constructor(p1: R|kotlin/Int?|, p2: R|kotlin/String?|, p3: R|kotlin/IntArray?|, p4: R|kotlin/Array<kotlin/Int>?|, p5: R|Ann1?|, p6: R|Enum?|): R|Ann2| {
super<R|kotlin/Any|>()
}
public final val p1: R|kotlin/Int?| = R|<local>/p1|
public get(): R|kotlin/Int?|
public final val p2: R|kotlin/String?| = R|<local>/p2|
public get(): R|kotlin/String?|
public final val p3: R|kotlin/IntArray?| = R|<local>/p3|
public get(): R|kotlin/IntArray?|
public final val p4: R|kotlin/Array<kotlin/Int>?| = R|<local>/p4|
public get(): R|kotlin/Array<kotlin/Int>?|
public final val p5: R|Ann1?| = R|<local>/p5|
public get(): R|Ann1?|
public final val p6: R|Enum?| = R|<local>/p6|
public get(): R|Enum?|
}
@@ -11,7 +11,7 @@ annotation class WithString(val s: String)
annotation class Complex(val wi: WithInt, val ws: WithString)
annotation class VeryComplex(val f: Float, val d: Double, val b: Boolean, val l: Long, val n: Int?)
annotation class VeryComplex(val f: Float, val d: Double, val b: Boolean, val l: Long, val n: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>Int?<!>)
// FILE: main.kt