ClassEnt can actually hold any Type.Ref
authoradam <adam@megacz.com>
Sun, 10 Jul 2005 02:02:39 +0000 (02:02 +0000)
committeradam <adam@megacz.com>
Sun, 10 Jul 2005 02:02:39 +0000 (02:02 +0000)
darcs-hash:20050710020239-5007d-b8993eae3c961eb7fcfaa2bffbb1c042290a0d28.gz

src/org/ibex/classgen/ConstantPool.java
src/org/ibex/classgen/Type.java

index f3fbdf0..67f4245 100644 (file)
@@ -219,7 +219,7 @@ class ConstantPool implements CGConst {
             return ent;
         }
         
-        if (o instanceof Type.Class) { ent = new ClassEnt(((Type.Class)o).internalForm()); }
+        if (o instanceof Type.Ref) { ent = new ClassEnt(((Type.Ref)o).internalForm()); }
         else if (o instanceof String) { ent = new StringLitEnt((String)o); }
         else if (o instanceof Integer) { ent = new IntLitEnt(((Integer)o).intValue()); }
         else if (o instanceof Float) { ent = new FloatLitEnt(((Float)o).floatValue()); }
@@ -240,7 +240,7 @@ class ConstantPool implements CGConst {
             ent = new MemberEnt(tag, m.getDeclaringClass(), m.name, m.getTypeDescriptor());
         } 
         else {
-            throw new IllegalArgumentException("Unknown type passed to add");
+            throw new IllegalArgumentException("Unknown type " + o + " passed to add");
         }
         
         int spaces = ent.slots();        
index cff9792..b84f20a 100644 (file)
@@ -106,6 +106,7 @@ public abstract class Type implements CGConst {
         public abstract String toString();
         public    Type.Ref asRef() { return this; }
         public    boolean  isRef() { return true; }
+        abstract String internalForm();
     }
 
     public static class Array extends Type.Ref {
@@ -115,6 +116,7 @@ public abstract class Type implements CGConst {
         public boolean isArray() { return true; }
         public String toString() { return base.toString() + "[]"; }
         public Type getElementType() { return base; }
+        String internalForm() { return getDescriptor(); }
     }
 
     public static class Class extends Type.Ref {