FIR IDE: make smartcast API return unstable smartcasts

This commit is contained in:
Tianyu Geng
2021-11-03 10:34:49 -07:00
committed by Ilya Kirillov
parent 6462642988
commit 197079c85c
31 changed files with 356 additions and 23 deletions
@@ -0,0 +1,3 @@
expression: a
isStable: null
smartCastType: null
@@ -0,0 +1,10 @@
interface A
interface B
fun <T> T.foo() where T: A, T: B {}
fun test(a: Any) {
if (a is A && a is B) {
<expr>a</expr>.foo()
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: true
smartCastType: (A&B)
@@ -0,0 +1,3 @@
expression: a
isStable: null
smartCastType: null
@@ -0,0 +1,11 @@
interface A
interface B
fun <T> T.foo() where T: A, T: B {}
var a: Any = 1
fun test() {
if (a is A && a is B) {
<expr>a</expr>.foo()
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: false
smartCastType: (A&B)
@@ -0,0 +1,3 @@
expression: a
isStable: null
smartCastType: null
@@ -0,0 +1,8 @@
interface A
interface B
fun test(a: Any) {
if (a is A && a is B) {
<expr>a</expr>
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: true
smartCastType: (A&B)
@@ -0,0 +1,3 @@
expression: a
isStable: null
smartCastType: null
@@ -0,0 +1,9 @@
interface A
interface B
var a: Any = 1
fun test() {
if (a is A && a is B) {
<expr>a</expr>
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: false
smartCastType: (A&B)
@@ -0,0 +1,5 @@
fun test(a: Any) {
if (a is String) {
<expr>a</expr>.length
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: true
smartCastType: kotlin.String
@@ -0,0 +1,6 @@
var a: Any = 1
fun test() {
if (a is String) {
<expr>a</expr>.length
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: null
smartCastType: null
@@ -0,0 +1,3 @@
expression: a
isStable: null
smartCastType: null
@@ -0,0 +1,5 @@
fun test(a: Any) {
if (a is String) {
<expr>a</expr>
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: true
smartCastType: kotlin.String
@@ -0,0 +1,3 @@
expression: a
isStable: null
smartCastType: null
@@ -0,0 +1,6 @@
var a: Any = 1
fun test() {
if (a is String) {
<expr>a</expr>
}
}
@@ -0,0 +1,3 @@
expression: a
isStable: false
smartCastType: kotlin.String