(GeneratorAdapter gen, LocalBinding lb,Expr val)
| 5645 | } |
| 5646 | |
| 5647 | public void emitAssignLocal(GeneratorAdapter gen, LocalBinding lb,Expr val){ |
| 5648 | if(!isMutable(lb)) |
| 5649 | throw new IllegalArgumentException("Cannot assign to non-mutable: " + lb.name); |
| 5650 | Class primc = lb.getPrimitiveType(); |
| 5651 | gen.loadThis(); |
| 5652 | if(primc != null) |
| 5653 | { |
| 5654 | if(!(val instanceof MaybePrimitiveExpr && ((MaybePrimitiveExpr) val).canEmitPrimitive())) |
| 5655 | throw new IllegalArgumentException("Must assign primitive to primitive mutable: " + lb.name); |
| 5656 | MaybePrimitiveExpr me = (MaybePrimitiveExpr) val; |
| 5657 | me.emitUnboxed(C.EXPRESSION, this, gen); |
| 5658 | gen.putField(objtype, lb.name, Type.getType(primc)); |
| 5659 | } |
| 5660 | else |
| 5661 | { |
| 5662 | val.emit(C.EXPRESSION, this, gen); |
| 5663 | gen.putField(objtype, lb.name, OBJECT_TYPE); |
| 5664 | } |
| 5665 | } |
| 5666 | |
| 5667 | private void emitLocal(GeneratorAdapter gen, LocalBinding lb, boolean clear){ |
| 5668 | if(closes.containsKey(lb)) |
no test coverage detected