KT-53146 Don't coerce Nothing? returned from "catch" clauses
At first, I tried to modify the logic in PromisedValue.materializeAt to get rid of all casts from Nothing? to other types, but that broke a number of tests containing casts of java.lang.Void to other types, so I decided to fix only this particular case with try...catch (for some reason, here we get a null of type java.lang.Object).
This commit is contained in:
committed by
teamcity
parent
4baa74f396
commit
903a5d69a4
+3
-1
@@ -1225,7 +1225,9 @@ class ExpressionCodegen(
|
||||
|
||||
val catchResult = catchBody.accept(this, catchBlockInfo)
|
||||
if (savedValue != null) {
|
||||
catchResult.materializeAt(tryAsmType, aTry.type, true)
|
||||
if (catchResult.irType != context.irBuiltIns.nothingNType) {
|
||||
catchResult.materializeAt(tryAsmType, aTry.type, true)
|
||||
}
|
||||
mv.store(savedValue, tryAsmType)
|
||||
} else {
|
||||
catchResult.discard()
|
||||
|
||||
Reference in New Issue
Block a user