Add quickfix for java.lang.Class as annotation parameter

This commit is contained in:
Denis Zharkov
2015-04-20 15:29:44 +03:00
parent fc5236244b
commit 1fc742ffeb
24 changed files with 379 additions and 22 deletions
@@ -0,0 +1,8 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
import kotlin.reflect.KClass
annotation class Ann(val arg: Array<KClass<*>>)
Ann(arg = array(String::class, Double::class)) class MyClass
@@ -0,0 +1,8 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
import kotlin.reflect.KClass
annotation class Ann(val arg1: KClass<*>, val arg2: KClass<out Any?>)
Ann(String::class, Int::class) class MyClass
@@ -0,0 +1,16 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
import kotlin.reflect.KClass
annotation class Ann(
val arg1: Int,
val arg2: KClass<*> = Int::class,
val arg3: Array<KClass<out Any?>> = array(String::class),
vararg val arg4: KClass<out Any?> = array(Double::class)
)
Ann(arg1 = 1) class MyClass1
Ann(arg1 = 2, arg2 = Boolean::class) class MyClass2
Ann(arg1 = 3, arg3 = array(Boolean::class)) class MyClass3
Ann(arg1 = 4, arg4 = String::class) class MyClass4
@@ -0,0 +1,16 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// ERROR: <html>Type inference failed. Expected type mismatch: <table><tr><td>required: </td><td><b>kotlin.reflect.KClass&lt;*&gt;</b></td></tr><tr><td>found: </td><td><font color=red><b>java.lang.Class&lt;???&gt;</b></font></td></tr></table></html>
// ERROR: <html>Type mismatch.<table><tr><td>Required:</td><td>kotlin.reflect.KClass&lt;*&gt;</td></tr><tr><td>Found:</td><td>java.lang.Class&lt;[ERROR : Err]&gt;</td></tr></table></html>
// ERROR: <html>Type mismatch.<table><tr><td>Required:</td><td>kotlin.reflect.KClass&lt;*&gt;</td></tr><tr><td>Found:</td><td>java.lang.Class&lt;kotlin.Double&gt;</td></tr></table></html>
// ERROR: Unresolved reference: Err
// WITH_RUNTIME
import kotlin.reflect.KClass
annotation class Ann(vararg val arg: KClass<*>)
Ann(String::class, javaClass<Err>()) class MyClass1
Ann(String::class, javaClass()) class MyClass2
val x = javaClass<Double>()
Ann(String::class, x) class MyClass3
@@ -0,0 +1,8 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
import kotlin.reflect.KClass
annotation class Ann(vararg val arg: KClass<*>)
Ann(String::class, Double::class, *array(Char::class)) class MyClass
@@ -0,0 +1,6 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
annotation class Ann(val arg: Array<Class<*>><caret>)
Ann(arg = array(javaClass<String>(), javaClass<Double>())) class MyClass
@@ -0,0 +1,6 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
annotation class Ann(val arg1: Class<*><caret>, val arg2: Class<out Any?>)
Ann(javaClass<String>(), javaClass<Int>()) class MyClass
@@ -0,0 +1,14 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
annotation class Ann(
val arg1: Int,
val arg2: Class<*><caret> = javaClass<Int>(),
val arg3: Array<Class<out Any?>> = array(javaClass<String>()),
vararg val arg4: Class<out Any?> = array(javaClass<Double>())
)
Ann(arg1 = 1) class MyClass1
Ann(arg1 = 2, arg2 = javaClass<Boolean>()) class MyClass2
Ann(arg1 = 3, arg3 = array(javaClass<Boolean>())) class MyClass3
Ann(arg1 = 4, arg4 = javaClass<String>()) class MyClass4
@@ -0,0 +1,14 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// ERROR: <html>Type inference failed. Expected type mismatch: <table><tr><td>required: </td><td><b>kotlin.reflect.KClass&lt;*&gt;</b></td></tr><tr><td>found: </td><td><font color=red><b>java.lang.Class&lt;???&gt;</b></font></td></tr></table></html>
// ERROR: <html>Type mismatch.<table><tr><td>Required:</td><td>kotlin.reflect.KClass&lt;*&gt;</td></tr><tr><td>Found:</td><td>java.lang.Class&lt;[ERROR : Err]&gt;</td></tr></table></html>
// ERROR: <html>Type mismatch.<table><tr><td>Required:</td><td>kotlin.reflect.KClass&lt;*&gt;</td></tr><tr><td>Found:</td><td>java.lang.Class&lt;kotlin.Double&gt;</td></tr></table></html>
// ERROR: Unresolved reference: Err
// WITH_RUNTIME
annotation class Ann(vararg val arg: Class<*><caret>)
Ann(javaClass<String>(), javaClass<Err>()) class MyClass1
Ann(javaClass<String>(), javaClass()) class MyClass2
val x = javaClass<Double>()
Ann(javaClass<String>(), x) class MyClass3
@@ -0,0 +1,6 @@
// "Replace Class<T> with KClass<T> in whole annotation" "true"
// WITH_RUNTIME
annotation class Ann(vararg val arg: Class<*><caret>)
Ann(javaClass<String>(), javaClass<Double>(), *array(javaClass<Char>())) class MyClass
@@ -0,0 +1,7 @@
import kotlin.reflect.KClass
annotation class AnnO(val arg: KClass<*>)
AnnO(Int::class)
Ann1(String::class)
class MyClassO
@@ -0,0 +1,26 @@
// "Replace Class<T> with KClass<T> for each annotation in project" "true"
// WITH_RUNTIME
import kotlin.reflect.KClass
annotation class Ann1(val arg: KClass<*>)
Ann1(String::class) class MyClass1
Ann1(MyClass1::class) class MyClass2
annotation class Ann2(val arg: Array<KClass<*>>)
Ann2(arg = array(Double::class)) class MyClass3 [Ann1(Char::class)] () {
annotation class Ann3(val arg: KClass<*> = Any::class)
Ann3(String::class) class Nested {
Ann1(arg = String::class) fun foo1() {
annotation class LocalAnn(val arg: KClass<*>)
[LocalAnn(Class<*>::class)] val x = 1
}
}
inner AnnO(Double::class) class Inner
}
AnnO(Boolean::class) class Another
@@ -0,0 +1,24 @@
// "Replace Class<T> with KClass<T> for each annotation in project" "true"
// WITH_RUNTIME
annotation class Ann1(val arg: Class<*><caret>)
Ann1(javaClass<String>()) class MyClass1
Ann1(javaClass<MyClass1>()) class MyClass2
annotation class Ann2(val arg: Array<Class<*>>)
Ann2(arg = array(javaClass<Double>())) class MyClass3 [Ann1(javaClass<Char>())] () {
annotation class Ann3(val arg: Class<*> = javaClass<Any>())
Ann3(javaClass<String>()) class Nested {
Ann1(arg = javaClass<String>()) fun foo1() {
annotation class LocalAnn(val arg: Class<*>)
[LocalAnn(javaClass<Class<*>>())] val x = 1
}
}
inner AnnO(javaClass<Double>()) class Inner
}
AnnO(javaClass<Boolean>()) class Another
@@ -0,0 +1,5 @@
annotation class AnnO(val arg: Class<*>)
AnnO(javaClass<Int>())
Ann1(javaClass<String>())
class MyClassO