X-Git-Url: http://git.megacz.com/?p=org.ibex.classgen.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2FJSSA.java;fp=src%2Forg%2Fibex%2Fclassgen%2FJSSA.java;h=d14efef685e7f85f0e9e40c202cee3bb1f031792;hp=664023f68ca481adc331458c468f412cd1202b7a;hb=58b777d0f15df1ffd1bfa16135030118ba7c26e3;hpb=1dc8d09e9f6b1a05ccd0a190ab63359ce90e363d diff --git a/src/org/ibex/classgen/JSSA.java b/src/org/ibex/classgen/JSSA.java index 664023f..d14efef 100644 --- a/src/org/ibex/classgen/JSSA.java +++ b/src/org/ibex/classgen/JSSA.java @@ -321,7 +321,11 @@ public class JSSA extends MethodGen implements CGConst { public class Return extends Op { final Expr e; public Return() { this(VOID_EXPR); } - public Return(Expr e) { this.e = e; } + public Return(Expr e) { + this.e = e; + if(Type.unify(method.getReturnType(),e.getType()) != method.getReturnType()) + throw new IllegalArgumentException("type mismatch"); + } public String toString() { return e.getType() == Type.VOID ? "return" : ("return "+e.toString()); } } @@ -425,8 +429,9 @@ public class JSSA extends MethodGen implements CGConst { private final Object o; public Constant(int i) { this(new Integer(i)); } public Constant(Object o) { this.o = o; } - public String _toString() { return o instanceof String ? "\"" + o + "\"" : o.toString(); } + public String _toString() { return o == null ? "null" : o instanceof String ? "\"" + o + "\"" : o.toString(); } public Type getType() { + if (o == null) return Type.NULL; if (o instanceof Byte) return Type.BYTE; if (o instanceof Short) return Type.SHORT; if (o instanceof Character) return Type.CHAR;