[FIR] Use type without smartcast for local variable with smartcasted initializer

This commit is contained in:
Dmitriy Novozhilov
2021-02-15 12:26:13 +03:00
parent 40e286b354
commit d4c26cca52
24 changed files with 253 additions and 159 deletions
@@ -11,16 +11,16 @@ fun case_1() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
while (a is String) {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>.<!UNRESOLVED_REFERENCE!>length<!>
}
}
@@ -33,16 +33,16 @@ fun case_2() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
while (true) {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>.<!UNRESOLVED_REFERENCE!>length<!>
}
}
@@ -55,16 +55,16 @@ fun case_3() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
do {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
} while (true)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -77,16 +77,16 @@ fun case_4() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
do {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
} while (false)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -99,16 +99,16 @@ fun case_5() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
for (i in 0..10) {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>.<!UNRESOLVED_REFERENCE!>length<!>
}
}
@@ -117,16 +117,16 @@ fun case_6() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
if (a is String) {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -135,14 +135,14 @@ fun case_7() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
when (true) {
true -> b = a
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -155,16 +155,16 @@ fun case_8() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
try {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
} catch (e: Exception) { }
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -173,18 +173,18 @@ fun case_9() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
try {
} catch (e: Exception) {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -193,18 +193,18 @@ fun case_10() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
try {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
} finally {
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -213,18 +213,18 @@ fun case_11() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
try {
} finally {
b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -237,15 +237,15 @@ fun case_12() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
while (if (true) { b = a; true } else true) {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>.<!UNRESOLVED_REFERENCE!>length<!>
}
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>.<!UNRESOLVED_REFERENCE!>length<!>
}
}
@@ -254,12 +254,12 @@ fun case_13() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
a.plus(if (true) { b = a; true } else true)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
@@ -272,12 +272,12 @@ fun case_14() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
while (true) {
if (true) { b = a; } else 3
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>b<!>.<!UNRESOLVED_REFERENCE!>length<!>
}
}
}
@@ -287,12 +287,12 @@ fun case_15() {
var a: Any = 4
if (a is String) {
var b = a
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
while (true) {
if (true) { b = a; } else { b = a; }
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.Any")!>b<!>.length
}
}
}