Smart completion: special items with "!!" and "?:" for nullable members

This commit is contained in:
Valentin Kipyatkov
2014-04-21 22:14:20 +04:00
parent 710e61dea7
commit 134496d182
23 changed files with 279 additions and 75 deletions
@@ -0,0 +1,7 @@
fun foo(s: String, c: Char){ }
fun bar(sss: String?) {
foo(<caret>)
}
// ELEMENT_TEXT: "!! sss"
@@ -0,0 +1,7 @@
fun foo(s: String, c: Char){ }
fun bar(sss: String?) {
foo(sss!!, <caret>)
}
// ELEMENT_TEXT: "!! sss"
@@ -0,0 +1,9 @@
fun foo(s: String){ }
fun getString(i: Int): String?{}
fun bar() {
foo(<caret>)
}
// ELEMENT_TEXT: "?: getString(i: Int)"
@@ -0,0 +1,9 @@
fun foo(s: String){ }
fun getString(i: Int): String?{}
fun bar() {
foo(getString(<caret>) ?: )
}
// ELEMENT_TEXT: "?: getString(i: Int)"
@@ -0,0 +1,11 @@
class K {
class object {
fun bar(): K? = K()
}
}
fun foo(){
val k : K = <caret>
}
// ELEMENT_TEXT: "!! K.bar()"
@@ -0,0 +1,11 @@
class K {
class object {
fun bar(): K? = K()
}
}
fun foo(){
val k : K = K.bar()!!<caret>
}
// ELEMENT_TEXT: "!! K.bar()"
@@ -7,4 +7,6 @@ class Foo(val prop1 : String?, val prop2 : String?){
}
// EXIST: prop1
// ABSENT: prop2
// ABSENT: { lookupString:"prop2", itemText:"prop2" }
// EXIST: { lookupString:"prop2", itemText:"!! prop2" }
// EXIST: { lookupString:"prop2", itemText:"?: prop2" }
@@ -17,5 +17,7 @@ fun foo(){
// EXIST: { lookupString:"K.foo", itemText:"K.foo", tailText:" (sample)", typeText:"K" }
// EXIST: { lookupString:"K.bar", itemText:"K.bar()", tailText:" (sample)", typeText:"K" }
// ABSENT: K.x
// ABSENT: K.kk
// ABSENT: { itemText:"K.kk" }
// EXIST: { lookupString:"K.kk", itemText:"!! K.kk", tailText:" (sample)", typeText:"K?" }
// EXIST: { lookupString:"K.kk", itemText:"?: K.kk", tailText:" (sample)", typeText:"K?" }
// ABSENT: K.privateVal
@@ -20,7 +20,9 @@ fun f3() : String{}
// EXIST: p1
// EXIST: p2
// ABSENT: p3
// ABSENT: p4
// ABSENT: { lookupString:"p4", itemText:"p4" }
// EXIST: { lookupString:"p4", itemText:"!! p4" }
// EXIST: { lookupString:"p4", itemText:"?: p4" }
// EXIST: f1
// EXIST: f2
// ABSENT: f3
@@ -0,0 +1,6 @@
fun String?.foo(){
val s : String = <caret>
}
// EXIST: { lookupString:"this", itemText: "!! this", typeText:"String?" }
// EXIST: { lookupString:"this", itemText: "?: this", typeText:"String?" }