Check that arguments of array function call in annotation are constants

#KT-16956 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2017-03-21 17:37:25 +03:00
parent a2ea518b1a
commit 8466270bdb
8 changed files with 93 additions and 21 deletions
@@ -0,0 +1,34 @@
import kotlin.reflect.KClass
annotation class Ann(
val a: Array<String> = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>arrayOf(readOnly)<!>,
val b: Array<String> = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>arrayOf(withGetter)<!>,
val c: Array<String> = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>arrayOf(func())<!>,
val d: IntArray = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>intArrayOf(ONE, twoWithGetter)<!>,
val e: IntArray = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>intArrayOf(ONE + twoWithGetter)<!>,
val f: Array<String> = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>arrayOf(mutable)<!>,
val g: Array<String> = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>arrayOf(mutableWithGetter)<!>,
val h: Array<KClass<*>> = <!ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT!>arrayOf(WithLateinit.kClass)<!>
)
const val ONE = 1
val twoWithGetter
get() = 2
val readOnly = ""
val withGetter
get() = ""
fun func() = ""
var mutable = ""
var mutableWithGetter
get() = ""
set(x) = TODO()
object WithLateinit {
lateinit var kClass: KClass<*>
}
@@ -0,0 +1,32 @@
package
public const val ONE: kotlin.Int = 1
public var mutable: kotlin.String
public var mutableWithGetter: kotlin.String
public val readOnly: kotlin.String = ""
public val twoWithGetter: kotlin.Int
public val withGetter: kotlin.String
public fun func(): kotlin.String
public final annotation class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ a: kotlin.Array<kotlin.String> = ..., /*1*/ b: kotlin.Array<kotlin.String> = ..., /*2*/ c: kotlin.Array<kotlin.String> = ..., /*3*/ d: kotlin.IntArray = ..., /*4*/ e: kotlin.IntArray = ..., /*5*/ f: kotlin.Array<kotlin.String> = ..., /*6*/ g: kotlin.Array<kotlin.String> = ..., /*7*/ h: kotlin.Array<kotlin.reflect.KClass<*>> = ...)
public final val a: kotlin.Array<kotlin.String>
public final val b: kotlin.Array<kotlin.String>
public final val c: kotlin.Array<kotlin.String>
public final val d: kotlin.IntArray
public final val e: kotlin.IntArray
public final val f: kotlin.Array<kotlin.String>
public final val g: kotlin.Array<kotlin.String>
public final val h: kotlin.Array<kotlin.reflect.KClass<*>>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public object WithLateinit {
private constructor WithLateinit()
public final lateinit var kClass: kotlin.reflect.KClass<*>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}