Smart completion for "ClassName::class" and "ClassName::class.java" when specific KClass or Class expected

This commit is contained in:
Valentin Kipyatkov
2015-10-08 13:42:02 +03:00
parent b92a06929e
commit 2c1defaf18
12 changed files with 193 additions and 0 deletions
@@ -0,0 +1,5 @@
open class A<T : Any>(val javaClass: Class<T>)
class B : A<String>(<caret>)
// EXIST_JAVA_ONLY: { lookupString: "String::class.java", itemText: "String::class.java", attributes: "" }
@@ -0,0 +1,7 @@
import kotlin.reflect.KClass
open class A<T : Any>(val kClass: KClass<T>)
class B : A<String>(<caret>)
// EXIST: { lookupString: "String::class", itemText: "String::class", attributes: "" }
@@ -0,0 +1,14 @@
import kotlin.reflect.KClass
fun <T : Any> foo(kClass: KClass<T>){}
fun <T : Any> foo(kClass: KClass<T>?, p: Int){}
fun f() {
foo<Int>(<caret>)
}
// WITH_ORDER
// EXIST: { lookupString: "Int::class", itemText: "Int::class", attributes: "" }
// EXIST: { lookupString: "object" }
// EXIST: null
// NOTHING_ELSE
@@ -0,0 +1,16 @@
import kotlin.reflect.KClass
interface I
fun foo(kClass: KClass<out I>){}
fun foo(kClass: KClass<in I>, p: Int){}
fun foo(kClass: KClass<*>, c: Char){}
fun <T : Any> foo(kClass: KClass<T>, d: Double){}
fun bar() {
foo(<caret>)
}
// ABSENT: "I::class"
// ABSENT: "Any::class"
// ABSENT: "T::class"