+ public static Type unify(Type t1, Type t2) {
+ if(t1 == Type.NULL) return t2;
+ if(t2 == Type.NULL) return t1;
+ if((t1 == Type.INT && t2 == Type.BOOLEAN) || (t2 == Type.INT & t1 == Type.BOOLEAN)) return Type.BOOLEAN;
+ if(t1 == t2) return t1;
+ // FIXME: This needs to do a lot more (subclasses, etc)
+ // it probably should be in Context.java
+ return null;
+ }
+
+ public static Type fromArraySpec(int i) {
+ switch(i) {
+ case 4: return Type.BOOLEAN;
+ case 5: return Type.CHAR;
+ case 6: return Type.FLOAT;
+ case 7: return Type.DOUBLE;
+ case 8: return Type.BYTE;
+ case 9: return Type.SHORT;
+ case 10: return Type.INT;
+ case 11: return Type.LONG;
+ default: throw new IllegalStateException("invalid array type");
+ }
+ }
+