From 3d556bfcad3eb3face9db986aa570d6e2a059448 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 4 Aug 2013 12:34:48 +0200 Subject: wip --- .../trygvis/container/compiler/model/TypeRef.java | 43 ++++++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java') diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java index 9c92e73..2e679a5 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/model/TypeRef.java @@ -37,12 +37,15 @@ public class TypeRef implements Comparable { private final boolean primitive; + public final boolean array; + public final List args; - private TypeRef(String fqName, String name, boolean primitive, List args) { + private TypeRef(String fqName, String name, boolean primitive, boolean array, List args) { this.fqName = fqName; this.plainName = name; this.primitive = primitive; + this.array = array; this.args = args; int i = this.fqName.lastIndexOf('.'); @@ -58,15 +61,28 @@ public class TypeRef implements Comparable { } public TypeRef(Class klass) { - this(klass.getCanonicalName()); + this(fqName(klass), fqName(klass), false, klass.isArray(), Collections.emptyList()); + } + + private static String fqName(Class klass) { + String name = klass.getCanonicalName(); + if (!klass.isArray()) { + return name; + } + + return name.substring(0, name.length() - 2); } public TypeRef(String fqName) { - this(fqName, fqName, false, Collections.emptyList()); + this(fqName, fqName, false, false, Collections.emptyList()); } - public TypeRef(String fqName, String name) { - this(fqName, name, false, Collections.emptyList()); + public TypeRef(String fqName, String name, boolean array, List args) { + this(fqName, name, false, array, args); + } + + public TypeRef args(List args) { + return new TypeRef(fqName, plainName, primitive, array, args); } public boolean isPrimitive() { @@ -87,8 +103,8 @@ public class TypeRef implements Comparable { return fqName.substring(0, i); } - public TypeRef args(List args) { - return new TypeRef(fqName, plainName, false, args); + public String importName() { + return fqName; } public TypeRef args(TypeRef... args) { @@ -102,7 +118,7 @@ public class TypeRef implements Comparable { TypeRef classRef = (TypeRef) o; - return fqName.equals(classRef.fqName); + return fqName.equals(classRef.fqName) && array == classRef.array; } @Override @@ -111,16 +127,19 @@ public class TypeRef implements Comparable { } @Override - public int compareTo(TypeRef o) { + public int compareTo(@SuppressWarnings("NullableProblems") TypeRef o) { return fqName.compareTo(o.fqName); } public String toString() { String s = plainName; - if(args.isEmpty()) { - return s; + if (!args.isEmpty()) { + s += "<" + join(args, ", ") + ">"; + } + if (array) { + s += "[]"; } - return s + "<" + join(args, ", ") + ">"; + return s; } public static TypeRef find(TypeKind kind) { -- cgit v1.2.3