NI: resolve try catch as synthetic function call (#KT-25435 fixed)

This commit is contained in:
Dmitriy Novozhilov
2019-01-31 14:00:18 +03:00
parent 4e64b07727
commit a236ad5686
8 changed files with 224 additions and 44 deletions
@@ -5,15 +5,15 @@ class ExcA : Exception()
class ExcB : Exception()
fun test2() {
val s: String? = try {
val s: String? = <!NI;TYPE_MISMATCH!>try {
""
}
catch (e: ExcA) {
null
}
catch (e: ExcB) {
<!CONSTANT_EXPECTED_TYPE_MISMATCH!>10<!>
}
<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>10<!>
}<!>
s<!UNSAFE_CALL!>.<!>length
}
@@ -13,8 +13,8 @@ fun test0(): List<Int> = run {
}
}
fun test1(): Map<Int, Int> = <!NI;TYPE_MISMATCH!>run {
<!NI;TYPE_MISMATCH!>try {
fun test1(): Map<Int, Int> = run {
try {
emptyMap()
} catch (e: ExcA) {
emptyMap()
@@ -22,13 +22,13 @@ fun test1(): Map<Int, Int> = <!NI;TYPE_MISMATCH!>run {
e.map
} finally {
<!UNUSED_EXPRESSION!>""<!>
}<!>
}<!>
}
}
fun test2(): Map<Int, Int> = <!NI;TYPE_MISMATCH!>run {
<!NI;TYPE_MISMATCH!>try {
fun test2(): Map<Int, Int> = run {
<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>try {
emptyMap()
} catch (e: ExcA) {
<!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>mapOf("" to "")<!>
<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>mapOf(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>"" to ""<!>)<!>
}<!>
}<!>
}