[FIR] Support PreliminaryLoopVisitor in FIR DFA

This commit is contained in:
Dmitriy Novozhilov
2021-02-11 17:42:30 +03:00
parent 0e46a961a3
commit 5711a8d610
34 changed files with 294 additions and 106 deletions
@@ -19,8 +19,8 @@ fun case_1() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>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")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
}
}
@@ -41,8 +41,8 @@ fun case_2() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>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")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
}
}
@@ -107,8 +107,8 @@ fun case_5() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>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")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
}
}
@@ -240,12 +240,12 @@ fun case_12() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
while (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")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>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")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
}
}
@@ -276,8 +276,8 @@ fun case_14() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String & kotlin.String")!>b<!>.length
while (true) {
if (true) { b = a; } else 3
<!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")!>b<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>b<!>.length
}
}
}
@@ -11,8 +11,8 @@ fun case_1() {
var x: Any? = null
if (x == null) return
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x != null)
}
@@ -25,8 +25,8 @@ fun case_2() {
var x: Any? = null
if (x === null) return
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x !== null)
}
@@ -57,8 +57,8 @@ fun case_5() {
var x: Any? = null
if (x == null) return
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x !== null)
}
@@ -71,8 +71,8 @@ fun case_6() {
var x: Any? = null
if (x === null) return
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x != null)
}
@@ -85,8 +85,8 @@ fun case_7() {
var x: Any? = null
x ?: return
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x !== null)
}
@@ -99,8 +99,8 @@ fun case_8() {
var x: Any? = null
if (x == null) throw Exception()
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x != null)
}
@@ -113,8 +113,8 @@ fun case_9() {
var x: Any? = null
x ?: throw Exception()
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x !== null)
}
@@ -127,8 +127,8 @@ fun case_10() {
var x: Any? = null
x as Any
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x != null)
}
@@ -155,8 +155,8 @@ fun case_12() {
var x: Any? = null
if (x is Any) {
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x .equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x <!UNSAFE_CALL!>.<!>equals(10)
} while (x != null)
}
}
@@ -170,8 +170,8 @@ fun case_13() {
var x: Any? = null
if (x != null) {
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x .equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x <!UNSAFE_CALL!>.<!>equals(10)
} while (x != null)
}
}
@@ -185,8 +185,8 @@ fun case_14() {
var x: Any? = null
if (x == null) return
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x.equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x<!UNSAFE_CALL!>.<!>equals(10)
} while (x is Any)
}
@@ -199,8 +199,8 @@ fun case_15() {
var x: Any? = null
if (x is Any) {
do {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Any?")!>x<!>
x = x .equals(10)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
x = x <!UNSAFE_CALL!>.<!>equals(10)
} while (x is Any)
}
}