Skip to content

Commit 4f0534e

Browse files
authored
utype can return the mirror (#118)
Now can get the mirror of the Utype
1 parent e2081a2 commit 4f0534e

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

prism-core/src/main/java/io/avaje/prism/internal/UTypeWriter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ public static void write(PrintWriter out, String packageName) {
4343
+ " Set<String> importTypes();\n"
4444
+ "\n"
4545
+ " /**\n"
46+
+ " * Return the type mirror of this Utype.\n"
47+
+ " *\n"
48+
+ " * @return the typemirror\n"
49+
+ " */\n"
50+
+ " TypeMirror mirror();\n"
51+
+ "\n"
52+
+ " /**\n"
4653
+ " * Return the full type as a code safe string. (with annotations if present)\n"
4754
+ " *\n"
4855
+ " * @return the full typeName\n"

prism-core/src/main/java/io/avaje/prism/internal/VisitorWriter.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public static void write(PrintWriter out, String packageName) {
4040
+ "\n"
4141
+ " private final Map<TypeVariable, String> typeVariables;\n"
4242
+ " private Set<String> allTypes = new HashSet<>();\n"
43+
+ " private TypeMirror typeMirror;\n"
4344
+ " private String mainType;\n"
4445
+ " private String fullType;\n"
4546
+ " private final List<UType> params = new ArrayList<>();\n"
@@ -75,6 +76,11 @@ public static void write(PrintWriter out, String packageName) {
7576
+ " return allTypes.stream().filter(this::notJavaLang).collect(toSet());\n"
7677
+ " }\n"
7778
+ "\n"
79+
+ " @Override\n"
80+
+ " public TypeMirror mirror() {\n"
81+
+ " return typeMirror;\n"
82+
+ " }\n"
83+
+ "\n"
7884
+ " private boolean notJavaLang(String type) {\n"
7985
+ " return !type.startsWith(\"java.lang.\") || Character.isLowerCase(type.charAt(10));\n"
8086
+ " }\n"
@@ -163,6 +169,7 @@ public static void write(PrintWriter out, String packageName) {
163169
+ "\n"
164170
+ " @Override\n"
165171
+ " public StringBuilder visitPrimitive(PrimitiveType t, StringBuilder p) {\n"
172+
+ " typeMirror = t;\n"
166173
+ " kind = t.getKind();\n"
167174
+ " if (includeAnnotations) {\n"
168175
+ " for (final var ta : t.getAnnotationMirrors()) {\n"
@@ -182,11 +189,13 @@ public static void write(PrintWriter out, String packageName) {
182189
+ "\n"
183190
+ " @Override\n"
184191
+ " public StringBuilder visitNull(NullType t, StringBuilder p) {\n"
192+
+ " typeMirror = t;\n"
185193
+ " return p;\n"
186194
+ " }\n"
187195
+ "\n"
188196
+ " @Override\n"
189197
+ " public StringBuilder visitArray(ArrayType t, StringBuilder p) {\n"
198+
+ " typeMirror = t;\n"
190199
+ " kind = t.getKind();\n"
191200
+ " boolean mainUnset = this.mainType == null;\n"
192201
+ " final var ct = t.getComponentType();\n"
@@ -212,6 +221,7 @@ public static void write(PrintWriter out, String packageName) {
212221
+ "\n"
213222
+ " @Override\n"
214223
+ " public StringBuilder visitDeclared(DeclaredType t, StringBuilder p) {\n"
224+
+ " typeMirror = t;\n"
215225
+ " kind = t.getKind();\n"
216226
+ " final String fqn = fullyQualifiedName(t, includeAnnotations);\n"
217227
+ " var trimmed = fullyQualifiedName(t, false);\n"
@@ -303,13 +313,15 @@ public static void write(PrintWriter out, String packageName) {
303313
+ "\n"
304314
+ " @Override\n"
305315
+ " public StringBuilder visitError(ErrorType t, StringBuilder p) {\n"
316+
+ " typeMirror = t;\n"
306317
+ " kind = t.getKind();\n"
307318
+ " mainType = t.toString();\n"
308319
+ " return p.append(mainType);\n"
309320
+ " }\n"
310321
+ "\n"
311322
+ " @Override\n"
312323
+ " public StringBuilder visitTypeVariable(TypeVariable t, StringBuilder p) {\n"
324+
+ " typeMirror = t;\n"
313325
+ " kind = t.getKind();\n"
314326
+ " // Types can be recursive so we have to check if we have already done this type.\n"
315327
+ " final String previous = typeVariables.get(t);\n"
@@ -344,6 +356,7 @@ public static void write(PrintWriter out, String packageName) {
344356
+ "\n"
345357
+ " @Override\n"
346358
+ " public StringBuilder visitWildcard(WildcardType t, StringBuilder p) {\n"
359+
+ " typeMirror = t;\n"
347360
+ " kind = t.getKind();\n"
348361
+ " final var extendsBound = t.getExtendsBound();\n"
349362
+ " final var superBound = t.getSuperBound();\n"
@@ -371,13 +384,15 @@ public static void write(PrintWriter out, String packageName) {
371384
+ "\n"
372385
+ " @Override\n"
373386
+ " public StringBuilder visitNoType(NoType t, StringBuilder p) {\n"
387+
+ " typeMirror = t;\n"
374388
+ " kind = t.getKind();\n"
375389
+ " mainType = t.toString();\n"
376390
+ " return p.append(mainType);\n"
377391
+ " }\n"
378392
+ "\n"
379393
+ " @Override\n"
380394
+ " public StringBuilder visitIntersection(IntersectionType t, StringBuilder p) {\n"
395+
+ " typeMirror = t;\n"
381396
+ " kind = t.getKind();\n"
382397
+ " boolean first = true;\n"
383398
+ " for (final var b : t.getBounds()) {\n"
@@ -393,6 +408,7 @@ public static void write(PrintWriter out, String packageName) {
393408
+ "\n"
394409
+ " @Override\n"
395410
+ " public StringBuilder visitUnion(UnionType t, StringBuilder p) {\n"
411+
+ " typeMirror = t;\n"
396412
+ " kind = t.getKind();\n"
397413
+ " boolean first = true;\n"
398414
+ " for (final var b : t.getAlternatives()) {\n"

0 commit comments

Comments
 (0)