X-Git-Url: http://git.megacz.com/?p=org.ibex.classgen.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2FType.java;h=84c934325714583536082483a51ca22d94797632;hp=a8a68d8d651e0e1e1ac9ff2e06e48fbf610c7228;hb=20b36057bc5aee6e799cce02a3bf289916889fc1;hpb=7fbbcd1b85ae398c4468651e05df64e938812397 diff --git a/src/org/ibex/classgen/Type.java b/src/org/ibex/classgen/Type.java index a8a68d8..84c9343 100644 --- a/src/org/ibex/classgen/Type.java +++ b/src/org/ibex/classgen/Type.java @@ -33,7 +33,7 @@ public class Type { public static Type instance(String d) { Type ret = (Type)instances.get(d); if (ret != null) return ret; - if (d.endsWith("[")) return new Type.Array(instance(d.substring(d.length()-1))); + if (d.startsWith("[")) return new Type.Array(instance(d.substring(1))); return new Type.Class(d); } @@ -42,7 +42,7 @@ public class Type { public int hashCode() { return descriptor.hashCode(); } public boolean equals(java.lang.Object o) { return this==o; } - public Type.Array makeArray() { return (Type.Array)instance(descriptor+"["); } + public Type.Array makeArray() { return (Type.Array)instance("["+descriptor); } public Type.Ref asRef() { throw new RuntimeException("attempted to use "+this+" as a Type.Ref, which it is not"); } public Type.Class asClass() { throw new RuntimeException("attempted to use "+this+" as a Type.Class, which it is not"); } @@ -92,10 +92,10 @@ public class Type { } public static class Array extends Type.Ref { - protected Array(Type t) { super(t.getDescriptor() + "[", t.toString() + "[]"); } + protected Array(Type t) { super("[" + t.getDescriptor(), t.toString() + "[]"); } public Type.Array asArray() { return this; } public boolean isArray() { return true; } - public int dimension() { return descriptor.length() - descriptor.indexOf('['); } + public int dimension() { return getDescriptor().lastIndexOf('['); } } }