Partial body resolve: rewritten algorithm of filter building to ensure correct resolve of smart cast points (+ prepared to support more strict mode for resolve only)
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
Resolve target: value-parameter val b: kotlin.String?
|
||||
----------------------------------------------
|
||||
data class TestData(val first: Int, val second: String?)
|
||||
|
||||
fun f() : TestData {}
|
||||
|
||||
fun test(b: String?, p: Int) {
|
||||
if (p > 0) {
|
||||
val (a, b) = f()
|
||||
print(b!!.size)
|
||||
}
|
||||
else {
|
||||
print(b!!.size)
|
||||
}
|
||||
<caret>b
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
data class TestData(val first: Int, val second: String?)
|
||||
|
||||
fun f() : TestData {}
|
||||
|
||||
fun test(b: String?, p: Int) {
|
||||
if (p > 0) {
|
||||
val (a, b) = f()
|
||||
print(b!!.size)
|
||||
}
|
||||
else {
|
||||
print(b!!.size)
|
||||
}
|
||||
<caret>b
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
Resolve target: value-parameter val s: kotlin.String?
|
||||
----------------------------------------------
|
||||
fun foo(s: String?, b1: Boolean, b2: Boolean) {
|
||||
x(
|
||||
if (b1) {
|
||||
print(s!!.length)
|
||||
1
|
||||
} else {
|
||||
if (b2) {
|
||||
print(s!!.length + 1)
|
||||
}
|
||||
else {
|
||||
print(s!!.length - 1)
|
||||
}
|
||||
2
|
||||
},
|
||||
<caret>s
|
||||
)
|
||||
}
|
||||
|
||||
fun x(p1: Int, p2: String) { }
|
||||
@@ -0,0 +1,19 @@
|
||||
fun foo(s: String?, b1: Boolean, b2: Boolean) {
|
||||
x(
|
||||
if (b1) {
|
||||
print(s!!.length)
|
||||
1
|
||||
} else {
|
||||
if (b2) {
|
||||
print(s!!.length + 1)
|
||||
}
|
||||
else {
|
||||
print(s!!.length - 1)
|
||||
}
|
||||
2
|
||||
},
|
||||
<caret>s
|
||||
)
|
||||
}
|
||||
|
||||
fun x(p1: Int, p2: String) { }
|
||||
@@ -0,0 +1,17 @@
|
||||
Resolve target: value-parameter val x: kotlin.Any?
|
||||
----------------------------------------------
|
||||
fun foo(x: Any?, p: Int) {
|
||||
if (p > 0) {
|
||||
val x = f()
|
||||
print(x!!)
|
||||
}
|
||||
else {
|
||||
val x = g()
|
||||
print(x!!)
|
||||
}
|
||||
|
||||
<caret>x.hashCode()
|
||||
}
|
||||
|
||||
fun f(): Any? = null
|
||||
fun g(): Any? = null
|
||||
@@ -0,0 +1,12 @@
|
||||
Resolve target: value-parameter val x: kotlin.Any?
|
||||
----------------------------------------------
|
||||
fun foo(x: Any?) {
|
||||
if (x == null) {
|
||||
val error = f()
|
||||
error("error")
|
||||
}
|
||||
|
||||
<caret>x.hashCode()
|
||||
}
|
||||
|
||||
fun f(): (String) -> Unit = {}
|
||||
Reference in New Issue
Block a user