Smart completion: inheritors instantiation suggested + fixed a bug with incorrect presentation of generic java class instantiation
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
val c: java.io.Closeable = <caret>
|
||||
|
||||
//ELEMENT: object
|
||||
//ELEMENT_TEXT: "object: Closeable{...}"
|
||||
|
||||
@@ -6,4 +6,4 @@ val c: java.io.Closeable = object: Closeable {
|
||||
}
|
||||
}
|
||||
|
||||
//ELEMENT: object
|
||||
//ELEMENT_TEXT: "object: Closeable{...}"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
import java.util.Date
|
||||
|
||||
var a : Date = <caret>
|
||||
|
||||
// ELEMENT: Date
|
||||
// TAIL_TEXT: "(...) (java.util)"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
import java.util.Date
|
||||
|
||||
var a : Date = Date(<caret>)
|
||||
|
||||
// ELEMENT: Date
|
||||
// TAIL_TEXT: "(...) (java.util)"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
var a : Runnable = <caret>
|
||||
|
||||
// ELEMENT: Runnable
|
||||
// ELEMENT_TEXT: Runnable
|
||||
// TAIL_TEXT: "()"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
var a : Runnable = Runnable { <caret> }
|
||||
|
||||
// ELEMENT: Runnable
|
||||
// ELEMENT_TEXT: Runnable
|
||||
// TAIL_TEXT: "()"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import java.util.ArrayList
|
||||
|
||||
var a : ArrayList<String> = <caret>
|
||||
|
||||
// EXIST: { lookupString: "ArrayList", itemText: "ArrayList<String>", tailText: "(...) (java.util)" }
|
||||
@@ -1,5 +0,0 @@
|
||||
import java.util.ArrayList
|
||||
|
||||
var a : ArrayList<String> = <caret>
|
||||
|
||||
// EXIST: ArrayList@ArrayList<String>()
|
||||
@@ -0,0 +1,8 @@
|
||||
import java.io.InputStream
|
||||
|
||||
fun foo(): InputStream {
|
||||
return <caret>
|
||||
}
|
||||
|
||||
// EXIST: ByteArrayInputStream
|
||||
// EXIST: FileInputStream
|
||||
@@ -0,0 +1,5 @@
|
||||
fun foo(): List<String> {
|
||||
return <caret>
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "ArrayList", itemText: "ArrayList<String>", tailText: "(...) (java.util)" }
|
||||
@@ -0,0 +1,15 @@
|
||||
import p.*
|
||||
|
||||
fun foo(): KotlinTrait<I1, I2> {
|
||||
return <caret>
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "object", itemText: "object: KotlinTrait<I1, I2>{...}" }
|
||||
// EXIST: { lookupString: "KotlinInheritor1", itemText: "KotlinInheritor1<I1>", tailText: "() (p)" }
|
||||
// EXIST: { lookupString: "KotlinInheritor2", itemText: "KotlinInheritor2", tailText: "() (p)" }
|
||||
// ABSENT: KotlinInheritor3
|
||||
// EXIST: { lookupString: "object", itemText: "object: KotlinInheritor4<I1, I2>(){...}" }
|
||||
// ABSENT: KotlinInheritor5
|
||||
// EXIST: { lookupString: "KotlinInheritor6", itemText: "KotlinInheritor6<I1, out Any?, out I3>", tailText: "() (p)" }
|
||||
// EXIST: { lookupString: "JavaInheritor1", itemText: "JavaInheritor1", tailText: "() (<root>)" }
|
||||
// ABSENT: JavaInheritor2
|
||||
@@ -0,0 +1,6 @@
|
||||
import p.*
|
||||
|
||||
class JavaInheritor1 implements KotlinTrait<I1, I2>{}
|
||||
|
||||
// is not suitable because type arguments do not match
|
||||
class JavaInheritor2 implements KotlinTrait<I1, I3>{}
|
||||
@@ -0,0 +1,23 @@
|
||||
package p
|
||||
|
||||
trait I1
|
||||
trait I2
|
||||
trait I3
|
||||
|
||||
trait KotlinTrait<T1, T2>
|
||||
|
||||
open class KotlinInheritor1<T> : KotlinTrait<T, I2>
|
||||
|
||||
class KotlinInheritor2 : KotlinInheritor1<I1>()
|
||||
|
||||
// is not suitable because type arguments do not match
|
||||
class KotlinInheritor3 : KotlinInheritor1<Any>()
|
||||
|
||||
abstract class KotlinInheritor4<T, V> : KotlinTrait<T, V>
|
||||
|
||||
// is not suitable because type arguments do not match
|
||||
class KotlinInheritor5 : KotlinTrait<Char, I2>
|
||||
|
||||
class KotlinInheritor6<T1, T2, T3 : I3> : KotlinTrait<T1, I2>
|
||||
|
||||
// ALLOW_AST_ACCESS
|
||||
@@ -0,0 +1,8 @@
|
||||
import p.*
|
||||
|
||||
fun foo(): KotlinTrait<I1, I1> {
|
||||
return <caret>
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "object", itemText: "object: KotlinTrait<I1, I1>{...}" }
|
||||
// EXIST: { lookupString: "KotlinInheritor", itemText: "KotlinInheritor<I1>", tailText: "() (p)" }
|
||||
@@ -0,0 +1,11 @@
|
||||
package p
|
||||
|
||||
trait I1
|
||||
trait I2
|
||||
trait I3
|
||||
|
||||
trait KotlinTrait<T1, T2>
|
||||
|
||||
class KotlinInheritor<T> : KotlinTrait<T, T>
|
||||
|
||||
// ALLOW_AST_ACCESS
|
||||
@@ -0,0 +1,8 @@
|
||||
import p.*
|
||||
|
||||
fun foo(): KotlinTrait<I1, I2> {
|
||||
return <caret>
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "object", itemText: "object: KotlinTrait<I1, I2>{...}" }
|
||||
// ABSENT: KotlinInheritor
|
||||
@@ -0,0 +1,11 @@
|
||||
package p
|
||||
|
||||
trait I1
|
||||
trait I2
|
||||
trait I3
|
||||
|
||||
trait KotlinTrait<T1, T2>
|
||||
|
||||
class KotlinInheritor<T> : KotlinTrait<T, T>
|
||||
|
||||
// ALLOW_AST_ACCESS
|
||||
@@ -0,0 +1,8 @@
|
||||
import p.*
|
||||
|
||||
fun foo(): KotlinTrait<I1<I2>> {
|
||||
return <caret>
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "object", itemText: "object: KotlinTrait<I1<I2>>{...}" }
|
||||
// EXIST: { lookupString: "KotlinInheritor", itemText: "KotlinInheritor<I2>", tailText: "() (p)" }
|
||||
@@ -0,0 +1,10 @@
|
||||
package p
|
||||
|
||||
trait I1<T>
|
||||
trait I2
|
||||
|
||||
trait KotlinTrait<T>
|
||||
|
||||
class KotlinInheritor<T> : KotlinTrait<I1<T>>
|
||||
|
||||
// ALLOW_AST_ACCESS
|
||||
@@ -0,0 +1,15 @@
|
||||
package p1
|
||||
|
||||
fun foo(): p2.KotlinTrait {
|
||||
return <caret>
|
||||
}
|
||||
|
||||
// EXIST: { lookupString: "object", itemText: "object: KotlinTrait{...}" }
|
||||
// EXIST: { lookupString: "KotlinInheritor1", itemText: "KotlinInheritor1", tailText: "() (p2)" }
|
||||
// EXIST: { lookupString: "KotlinInheritor2", itemText: "KotlinInheritor2", tailText: "(s: String) (p2)" }
|
||||
// EXIST: { lookupString: "object", itemText: "object: KotlinInheritor3(){...}" }
|
||||
// ABSENT: PrivateInheritor
|
||||
// EXIST: { lookupString: "object", itemText: "object: JavaInheritor1(){...}" }
|
||||
// EXIST: { lookupString: "JavaInheritor2", itemText: "JavaInheritor2", tailText: "(...) (<root>)" }
|
||||
// ABSENT: JavaInheritor3
|
||||
// EXIST: { lookupString: "ObjectInheritor", itemText: "ObjectInheritor", tailText: " (p2)" }
|
||||
@@ -0,0 +1,16 @@
|
||||
import p2.KotlinTrait
|
||||
|
||||
public abstract class JavaInheritor1 implements KotlinTrait {
|
||||
}
|
||||
|
||||
public class JavaInheritor2 extends JavaInheritor1 {
|
||||
public JavaInheritor2() {
|
||||
}
|
||||
|
||||
public JavaInheritor2(int p) {
|
||||
}
|
||||
}
|
||||
|
||||
// not visible - it's package local
|
||||
class JavaInheritor3 extends KotlinTrait {}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package p2
|
||||
|
||||
trait KotlinTrait
|
||||
|
||||
open class KotlinInheritor1 : KotlinTrait
|
||||
|
||||
class KotlinInheritor2(s: String) : KotlinInheritor1()
|
||||
|
||||
abstract class KotlinInheritor3 : KotlinTrait
|
||||
|
||||
class C {
|
||||
private class PrivateInheritor : KotlinTrait
|
||||
}
|
||||
|
||||
object ObjectInheritor : KotlinTrait
|
||||
|
||||
// ALLOW_AST_ACCESS
|
||||
Reference in New Issue
Block a user