UAST: Fix annotation arguments processing
multiple unnamed arguments represented as value named expression with array initializer call kind for array in annotation argument should be "array initializer" instead of "method call" #KT-16600 Fixed Target Versions 1.1.5
This commit is contained in:
+14
-1
@@ -1,5 +1,18 @@
|
||||
|
||||
annotation class IntRange(val from: Long, val to: Long)
|
||||
|
||||
annotation class RequiresPermission(val anyOf: IntArray)
|
||||
|
||||
annotation class WithDefaultValue(val value: Int = 42)
|
||||
|
||||
annotation class SuppressLint(vararg val value: String)
|
||||
|
||||
@RequiresPermission(anyOf = intArrayOf(1, 2, 3))
|
||||
@IntRange(from = 10, to = 0)
|
||||
fun foo(): Int = 5
|
||||
@WithDefaultValue
|
||||
@SuppressLint("Lorem")
|
||||
fun foo(): Int = 5
|
||||
|
||||
@IntRange(0, 100)
|
||||
@SuppressLint("Lorem", "Ipsum", "Dolor")
|
||||
fun bar() = Unit
|
||||
@@ -1,12 +1,44 @@
|
||||
UFile (package = )
|
||||
UClass (name = AnnotationParametersKt)
|
||||
UAnnotationMethod (name = foo)
|
||||
UAnnotation (fqName = RequiresPermission)
|
||||
UNamedExpression (name = anyOf)
|
||||
UCallExpression (kind = UastCallKind(name='array_initializer'), argCount = 3))
|
||||
UIdentifier (Identifier (intArrayOf))
|
||||
USimpleNameReferenceExpression (identifier = intArrayOf)
|
||||
ULiteralExpression (value = 1)
|
||||
ULiteralExpression (value = 2)
|
||||
ULiteralExpression (value = 3)
|
||||
UAnnotation (fqName = IntRange)
|
||||
UNamedExpression (name = from)
|
||||
ULiteralExpression (value = 10)
|
||||
UNamedExpression (name = to)
|
||||
ULiteralExpression (value = 0)
|
||||
UAnnotation (fqName = WithDefaultValue)
|
||||
UAnnotation (fqName = SuppressLint)
|
||||
UNamedExpression (name = value)
|
||||
ULiteralExpression (value = "Lorem")
|
||||
ULiteralExpression (value = 5)
|
||||
UAnnotationMethod (name = bar)
|
||||
UAnnotation (fqName = IntRange)
|
||||
UNamedExpression (name = from)
|
||||
ULiteralExpression (value = 0)
|
||||
UNamedExpression (name = to)
|
||||
ULiteralExpression (value = 100)
|
||||
UAnnotation (fqName = SuppressLint)
|
||||
UNamedExpression (name = value)
|
||||
UCallExpression (kind = UastCallKind(name='array_initializer'), argCount = 3))
|
||||
ULiteralExpression (value = "Lorem")
|
||||
ULiteralExpression (value = "Ipsum")
|
||||
ULiteralExpression (value = "Dolor")
|
||||
USimpleNameReferenceExpression (identifier = Unit)
|
||||
UClass (name = IntRange)
|
||||
UAnnotationMethod (name = from)
|
||||
UAnnotationMethod (name = to)
|
||||
UClass (name = RequiresPermission)
|
||||
UAnnotationMethod (name = anyOf)
|
||||
UClass (name = WithDefaultValue)
|
||||
UAnnotationMethod (name = value)
|
||||
ULiteralExpression (value = 42)
|
||||
UClass (name = SuppressLint)
|
||||
UAnnotationMethod (name = value)
|
||||
|
||||
@@ -1,9 +1,27 @@
|
||||
public final class AnnotationParametersKt {
|
||||
@RequiresPermission(anyOf = intArrayOf(1, 2, 3))
|
||||
@IntRange(from = 10, to = 0)
|
||||
@WithDefaultValue
|
||||
@SuppressLint(value = "Lorem")
|
||||
public static final fun foo() : int = 5
|
||||
@IntRange(from = 0, to = 100)
|
||||
@SuppressLint(value = <noref>("Lorem", "Ipsum", "Dolor"))
|
||||
public static final fun bar() : void = Unit
|
||||
}
|
||||
|
||||
public abstract annotation IntRange {
|
||||
public abstract fun from() : long = UastEmptyExpression
|
||||
public abstract fun to() : long = UastEmptyExpression
|
||||
}
|
||||
|
||||
public abstract annotation RequiresPermission {
|
||||
public abstract fun anyOf() : int[] = UastEmptyExpression
|
||||
}
|
||||
|
||||
public abstract annotation WithDefaultValue {
|
||||
public abstract fun value() : int = UastEmptyExpression
|
||||
}
|
||||
|
||||
public abstract annotation SuppressLint {
|
||||
public abstract fun value() : java.lang.String[] = UastEmptyExpression
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user