Smart completion: auto-casted types supported

This commit is contained in:
Valentin Kipyatkov
2013-11-18 16:02:34 +04:00
parent 7bc8f9f5ff
commit acb5bb2b07
11 changed files with 220 additions and 51 deletions
@@ -0,0 +1,12 @@
open class Foo{
fun f() {
if (this is Bar){
var a : Bar = <caret>
}
}
}
class Bar : Foo
// EXIST: this
@@ -1,4 +1,4 @@
fun f(p: Object) {
fun f(p: Any) {
if (p is String){
var a : String = <caret>
}
@@ -0,0 +1,10 @@
class Foo(val prop1 : Any, val prop2 : Any){
fun f(p1: Foo, p2: Foo) {
if (p1.prop1 is String && p2.prop2 is String && prop2 is String){
var a : String = p1.<caret>
}
}
}
// EXIST: prop1
// ABSENT: prop2
@@ -0,0 +1,8 @@
fun String?.foo(){
if (this != null){
val s : String = <caret>
}
}
// EXIST: this
@@ -0,0 +1,7 @@
fun f(p: String?) {
if (p != null){
var a : String = <caret>
}
}
// EXIST: p
@@ -0,0 +1,10 @@
class Foo(val prop1 : String?, val prop2 : String?){
fun f(p1: Foo, p2: Foo) {
if (p1.prop1 != null && p2.prop2 != null && prop2 != null){
var a : String = p1.<caret>
}
}
}
// EXIST: prop1
// ABSENT: prop2
@@ -0,0 +1,11 @@
fun fail() : Nothing{
throw RuntimeException()
}
fun f(p : String) {
var a : String = <caret>
}
// EXIST: p
// ABSENT: fail
// ABSENT: error
@@ -0,0 +1,5 @@
fun String.foo(){
val s : String = <caret>
}
// EXIST: this