From d54f8660ded621af4065b8907255c162df0f6eb0 Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 10 Jul 2005 02:02:39 +0000 Subject: [PATCH] ClassEnt can actually hold any Type.Ref darcs-hash:20050710020239-5007d-b8993eae3c961eb7fcfaa2bffbb1c042290a0d28.gz --- src/org/ibex/classgen/ConstantPool.java | 4 ++-- src/org/ibex/classgen/Type.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/org/ibex/classgen/ConstantPool.java b/src/org/ibex/classgen/ConstantPool.java index f3fbdf0..67f4245 100644 --- a/src/org/ibex/classgen/ConstantPool.java +++ b/src/org/ibex/classgen/ConstantPool.java @@ -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(); diff --git a/src/org/ibex/classgen/Type.java b/src/org/ibex/classgen/Type.java index cff9792..b84f20a 100644 --- a/src/org/ibex/classgen/Type.java +++ b/src/org/ibex/classgen/Type.java @@ -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 { -- 1.7.10.4