FIR: introduce & use REFERENCE_BY_QUALIFIER positioning strategy
This commit is contained in:
+7
-7
@@ -24,8 +24,8 @@ fun test_1(x: Any) {
|
||||
fun test_2(x: Any) {
|
||||
if (x is B || x is C) {
|
||||
x.foo()
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>baz<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
x.<!UNRESOLVED_REFERENCE!>baz<!>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,26 +59,26 @@ fun test_6(x: Any) {
|
||||
fun test_7(x: Any) {
|
||||
if (x is A || false) {
|
||||
// TODO: should be smartcast
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
}
|
||||
|
||||
fun test_8(x: Any) {
|
||||
if (false || x is A) {
|
||||
// TODO: should be smartcast
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
}
|
||||
|
||||
fun test_9(x: Any) {
|
||||
if (x is A || true) {
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
}
|
||||
|
||||
fun test_10(x: Any) {
|
||||
if (true || x is A) {
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ fun test_10(x: Any) {
|
||||
|
||||
fun test_11(x: Any, b: Boolean) {
|
||||
if (false && x is A) {
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ fun test_3(x: Any, y: Any) {
|
||||
}
|
||||
z = y
|
||||
if (y is B) {
|
||||
z.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
z.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
z.bar()
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ fun test_4(y: Any) {
|
||||
x as Int
|
||||
x.inc()
|
||||
x = y
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>inc<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>inc<!>()
|
||||
if (y is A) {
|
||||
x.foo()
|
||||
y.foo()
|
||||
|
||||
@@ -15,31 +15,31 @@ fun test_3(b: Boolean, x: Any?) {
|
||||
if (b && x as Boolean) {
|
||||
x.not()
|
||||
}
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
|
||||
if (b && x as Boolean == true) {
|
||||
x.not()
|
||||
}
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
|
||||
if (b || x as Boolean) {
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
}
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
}
|
||||
|
||||
fun test_4(b: Any) {
|
||||
if (b as? Boolean != null) {
|
||||
b.not()
|
||||
} else {
|
||||
b.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
b.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
}
|
||||
b.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
b.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
|
||||
if (b as? Boolean == null) {
|
||||
b.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
b.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
} else {
|
||||
b.not()
|
||||
}
|
||||
b.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>not<!>()<!>
|
||||
b.<!UNRESOLVED_REFERENCE!>not<!>()
|
||||
}
|
||||
|
||||
+5
-5
@@ -36,8 +36,8 @@ fun test_2(x: Any) {
|
||||
else -> return
|
||||
}
|
||||
x.foo()
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>baz<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
x.<!UNRESOLVED_REFERENCE!>baz<!>()
|
||||
}
|
||||
|
||||
fun test_3(x: Any) {
|
||||
@@ -45,9 +45,9 @@ fun test_3(x: Any) {
|
||||
x is B -> x.bar()
|
||||
x is C -> x.baz()
|
||||
}
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>baz<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
x.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
x.<!UNRESOLVED_REFERENCE!>baz<!>()
|
||||
}
|
||||
|
||||
fun <T> runHigherOrder(f: () -> T): T = f()
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ fun test_4(x: Any, b: Boolean) {
|
||||
}
|
||||
break
|
||||
}
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!> // No smartcast
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>() // No smartcast
|
||||
}
|
||||
|
||||
fun test_5(x: Any, b: Boolean) {
|
||||
|
||||
@@ -4,19 +4,19 @@ fun String.foo() {}
|
||||
|
||||
fun test_1(a: Any?) {
|
||||
when (a) {
|
||||
is String, is Any -> a.<!INAPPLICABLE_CANDIDATE{LT}!><!INAPPLICABLE_CANDIDATE{PSI}!>foo<!>()<!> // Should be Bad
|
||||
is String, is Any -> a.<!INAPPLICABLE_CANDIDATE!>foo<!>() // Should be Bad
|
||||
}
|
||||
}
|
||||
|
||||
fun test_2(a: Any?) {
|
||||
if (a is String || a is Any) {
|
||||
a.<!INAPPLICABLE_CANDIDATE{LT}!><!INAPPLICABLE_CANDIDATE{PSI}!>foo<!>()<!> // Should be Bad
|
||||
a.<!INAPPLICABLE_CANDIDATE!>foo<!>() // Should be Bad
|
||||
}
|
||||
}
|
||||
|
||||
fun test_3(a: Any?, b: Boolean) {
|
||||
when (a) {
|
||||
is String, b -> a.<!INAPPLICABLE_CANDIDATE{LT}!><!INAPPLICABLE_CANDIDATE{PSI}!>foo<!>()<!> // Should be Bad
|
||||
is String, b -> a.<!INAPPLICABLE_CANDIDATE!>foo<!>() // Should be Bad
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+18
-18
@@ -14,23 +14,23 @@ fun Any?.test_1() {
|
||||
this.foo()
|
||||
foo()
|
||||
} else {
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
|
||||
fun Any?.test_2() {
|
||||
if (this !is A) {
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
} else {
|
||||
this.foo()
|
||||
foo()
|
||||
}
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
}
|
||||
|
||||
fun test_3(a: Any, b: Any, c: Any) {
|
||||
@@ -49,13 +49,13 @@ fun test_3(a: Any, b: Any, c: Any) {
|
||||
|
||||
fun Any?.test_4() {
|
||||
if (this !is A) {
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
this.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
} else if (this !is B) {
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
this.foo()
|
||||
foo()
|
||||
} else {
|
||||
@@ -64,10 +64,10 @@ fun Any?.test_4() {
|
||||
this.bar()
|
||||
bar()
|
||||
}
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>foo<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bar<!>()<!>
|
||||
this.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
this.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
}
|
||||
|
||||
fun Any.test_5(): Int = when {
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ fun test_3(x: Any) {
|
||||
(x as? A)?.bar(x)?.foo(x.bool())?.let {
|
||||
x.bool()
|
||||
}
|
||||
x.<!UNRESOLVED_REFERENCE{LT}!><!UNRESOLVED_REFERENCE{PSI}!>bool<!>()<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>bool<!>()
|
||||
}
|
||||
|
||||
fun test_4(x: A?) {
|
||||
|
||||
Reference in New Issue
Block a user