Add quickfix for usages of javaClass<T>() in annotations loaded from Java

This commit is contained in:
Denis Zharkov
2015-04-17 17:48:20 +03:00
parent 7325a459e5
commit cc9322fbdd
35 changed files with 444 additions and 10 deletions
@@ -0,0 +1,12 @@
// "Replace javaClass<T>() with T::class in whole project" "true"
// WITH_RUNTIME
import java.lang.Number
Ann(arg = array(Int::class, String::class)) class MyClass1
Ann(arg = array<java.lang.Class<*>>(Number::class, String::class)) class MyClass2
Ann(arg = array<java.lang.Class<out kotlin.Comparable<*>>>(Int::class, String::class)) class MyClass3
Ann(arg = array<java.lang.Class<Int>>(Int::class)) class MyClass4
@@ -0,0 +1,10 @@
// "Replace javaClass<T>() with T::class in whole project" "true"
// WITH_RUNTIME
Ann(arg = array(javaClass<Int>(), javaClass<String>()<caret>)) class MyClass1
Ann(arg = array<java.lang.Class<*>>(javaClass<java.lang.Number>(), javaClass<String>())) class MyClass2
Ann(arg = array<java.lang.Class<out kotlin.Comparable<*>>>(javaClass<kotlin.Int>(), javaClass<String>())) class MyClass3
Ann(arg = array<java.lang.Class<Int>>(javaClass<kotlin.Int>())) class MyClass4
@@ -0,0 +1,4 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
Ann(String::class<caret>) class MyClass
@@ -0,0 +1,4 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
Ann(javaClass<String>()<caret>) class MyClass
@@ -0,0 +1,3 @@
public @interface Ann {
Class<?> value();
}
@@ -0,0 +1,6 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
import java.util.Random
Ann(A::class, A::class, *array(A::class), arg1 = A.B::class, arg2 = Random::class) class MyClass
@@ -0,0 +1,4 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
Ann(javaClass(), javaClass(), *array(javaClass())<caret>, arg1 = javaClass(), arg2 = javaClass()) class MyClass
@@ -0,0 +1,11 @@
public @interface Ann {
Class<? extends A>[] value();
Class<? extends A.B> arg1();
Class<? extends java.util.Random> arg2();
}
class A {
static class B {}
}
@@ -0,0 +1,4 @@
// "Replace javaClass<T>() with T::class in whole project" "true"
// WITH_RUNTIME
Ann(String::class) class MyClass
@@ -0,0 +1,20 @@
// "Replace javaClass<T>() with T::class in whole project" "true"
// WITH_RUNTIME
Ann(String::class, arg = Int::class, args = array()) class MyClass1
Ann(String::class, arg = Int::class, x = 1, args = array(Double::class)) class MyClass2 {
Ann(String::class, arg = Int::class, args = array(Double::class)) class Nested {
Ann(String::class, arg = Int::class, args = array(Double::class)) fun foo1() {
[Ann(String::class, arg = Int::class, args = array(Double::class))] class Local
}
[Ann(String::class, arg = Int::class, args = array(Double::class), x = 1)] fun foo2() {
[Ann(String::class, arg = Int::class, args = array(Double::class))] val local = 0
}
}
inner Ann(Double::class) class Inner
}
@@ -0,0 +1,20 @@
// "Replace javaClass<T>() with T::class in whole project" "true"
// WITH_RUNTIME
Ann(javaClass<String>()<caret>, arg = javaClass<Int>(), args = array()) class MyClass1
Ann(javaClass<String>(), arg = javaClass<Int>(), x = 1, args = array(javaClass<Double>())) class MyClass2 {
Ann(javaClass<String>(), arg = javaClass<Int>(), args = array(javaClass<Double>())) class Nested {
Ann(javaClass<String>(), arg = javaClass<Int>(), args = array(javaClass<Double>())) fun foo1() {
[Ann(javaClass<String>(), arg = javaClass<Int>(), args = array(javaClass<Double>()))] class Local
}
[Ann(javaClass<String>(), arg = javaClass<Int>(), args = array(javaClass<Double>()), x = 1)] fun foo2() {
[Ann(javaClass<String>(), arg = javaClass<Int>(), args = array(javaClass<Double>()))] val local = 0
}
}
inner Ann(javaClass<Double>()) class Inner
}
@@ -0,0 +1,7 @@
public @interface Ann {
Class<?> value();
int x() default 1;
double y() default 1.0;
Class<?> arg() default String;
Class<?>[] args() default {};
}
@@ -0,0 +1,4 @@
// "Replace javaClass<T>() with T::class in whole project" "true"
// WITH_RUNTIME
Ann(javaClass<String>()) class MyClass
@@ -0,0 +1,6 @@
// "Replace javaClass<T>() with T::class" "true"
// ERROR: An annotation parameter must be a `javaClass<T>()` call
// WITH_RUNTIME
val jClass = javaClass<String>()
Ann(jClass, Int::class) class MyClass1
@@ -0,0 +1,6 @@
// "Replace javaClass<T>() with T::class" "true"
// ERROR: An annotation parameter must be a `javaClass<T>()` call
// WITH_RUNTIME
val jClass = javaClass<String>()
Ann(jClass, javaClass<Int>()<caret>) class MyClass1
@@ -0,0 +1,3 @@
public @interface Ann {
Class<?>[] value();
}
@@ -0,0 +1,6 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
import java.lang
Ann(String::class, x = 2, arg = (Int::class), args = array((Any::class), lang.String::class)) class MyClass
@@ -0,0 +1,4 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
Ann(javaClass<String>(), x = 2, arg = (javaClass<Int>()), args = array((javaClass<Any>()), javaClass<java.lang.String>())<caret>) class MyClass
@@ -0,0 +1,7 @@
public @interface Ann {
Class<?> value();
int x();
double y() default 1.0;
Class<?> arg();
Class<?>[] args();
}
@@ -0,0 +1,5 @@
// "Replace javaClass<T>() with T::class" "true"
// ERROR: Unresolved reference: Err
// WITH_RUNTIME
Ann(javaClass<Err>(), Int::class) class MyClass1
@@ -0,0 +1,5 @@
// "Replace javaClass<T>() with T::class" "true"
// ERROR: Unresolved reference: Err
// WITH_RUNTIME
Ann(javaClass<Err>(), javaClass<Int>()<caret>) class MyClass1
@@ -0,0 +1,3 @@
public @interface Ann {
Class<?>[] value();
}
@@ -0,0 +1,13 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
import java.lang
Ann(
String::class,
Int::class,
*array(Double::class),
x = 2,
arg = Int::class,
args = array(Any::class, lang.String::class))
class MyClass
@@ -0,0 +1,11 @@
// "Replace javaClass<T>() with T::class" "true"
// WITH_RUNTIME
Ann(
javaClass<String>(),
javaClass<Int>(),
*array(javaClass<Double>()),
x = 2,
arg = javaClass<Int>(),
args = array(javaClass<Any>(), javaClass<java.lang.String>())<caret>)
class MyClass
@@ -0,0 +1,7 @@
public @interface Ann {
Class<?>[] value();
int x();
double y() default 1.0;
Class<?> arg();
Class<?>[] args();
}