Uast: support for Kotlin array literals

This commit is contained in:
Nicolay Mitropolsky
2018-01-31 18:48:15 +03:00
parent 358bc62fc1
commit 8ac95b54a2
7 changed files with 127 additions and 3 deletions
+9 -1
View File
@@ -3,6 +3,8 @@ annotation class IntRange(val from: Long, val to: Long)
annotation class RequiresPermission(val anyOf: IntArray)
annotation class RequiresStrPermission(val strs: Array<String>)
annotation class WithDefaultValue(val value: Int = 42)
annotation class SuppressLint(vararg val value: String)
@@ -15,4 +17,10 @@ fun foo(): Int = 5
@IntRange(0, 100)
@SuppressLint("Lorem", "Ipsum", "Dolor")
fun bar() = Unit
fun bar() = Unit
@RequiresPermission(anyOf = [1, 2, 3])
fun fooWithArrLiteral(): Int = 5
@RequiresStrPermission(strs = ["a", "b", "c"])
fun fooWithStrArrLiteral(): Int = 3
@@ -32,11 +32,31 @@ UFile (package = )
ULiteralExpression (value = "Ipsum")
ULiteralExpression (value = "Dolor")
USimpleNameReferenceExpression (identifier = Unit)
UAnnotationMethod (name = fooWithArrLiteral)
UAnnotation (fqName = RequiresPermission)
UNamedExpression (name = anyOf)
UCallExpression (kind = UastCallKind(name='array_initializer'), argCount = 3))
UIdentifier (Identifier ([))
ULiteralExpression (value = 1)
ULiteralExpression (value = 2)
ULiteralExpression (value = 3)
ULiteralExpression (value = 5)
UAnnotationMethod (name = fooWithStrArrLiteral)
UAnnotation (fqName = RequiresStrPermission)
UNamedExpression (name = strs)
UCallExpression (kind = UastCallKind(name='array_initializer'), argCount = 3))
UIdentifier (Identifier ([))
ULiteralExpression (value = "a")
ULiteralExpression (value = "b")
ULiteralExpression (value = "c")
ULiteralExpression (value = 3)
UClass (name = IntRange)
UAnnotationMethod (name = from)
UAnnotationMethod (name = to)
UClass (name = RequiresPermission)
UAnnotationMethod (name = anyOf)
UClass (name = RequiresStrPermission)
UAnnotationMethod (name = strs)
UClass (name = WithDefaultValue)
UAnnotationMethod (name = value)
ULiteralExpression (value = 42)
@@ -7,6 +7,10 @@ public final class AnnotationParametersKt {
@IntRange(from = 0, to = 100)
@SuppressLint(value = <noref>("Lorem", "Ipsum", "Dolor"))
public static final fun bar() : void = Unit
@RequiresPermission(anyOf = collectionLiteral[1, 2, 3])
public static final fun fooWithArrLiteral() : int = 5
@RequiresStrPermission(strs = collectionLiteral["a", "b", "c"])
public static final fun fooWithStrArrLiteral() : int = 3
}
public abstract annotation IntRange {
@@ -18,6 +22,10 @@ public abstract annotation RequiresPermission {
public abstract fun anyOf() : int[] = UastEmptyExpression
}
public abstract annotation RequiresStrPermission {
public abstract fun strs() : java.lang.String[] = UastEmptyExpression
}
public abstract annotation WithDefaultValue {
public abstract fun value() : int = UastEmptyExpression
}