Fix codegen for closures returning 'Unit?'

Only do a checkcast when we need to coerce Object to Unit: the code was
hopefully type-checked so that it'll only be necessary when the value is either
Unit.VALUE or null
This commit is contained in:
Alexander Udalov
2013-12-11 17:56:10 +04:00
parent 9e5c68a8f9
commit 0576851102
4 changed files with 34 additions and 1 deletions
@@ -242,7 +242,10 @@ public abstract class StackValue {
}
}
else if (toType.equals(JET_UNIT_TYPE)) {
if (!fromType.equals(getType(Void.class))) {
if (fromType.equals(getType(Object.class))) {
v.checkcast(JET_UNIT_TYPE);
}
else if (!fromType.equals(getType(Void.class))) {
pop(v, fromType);
putUnitInstance(v);
}