diff --git a/src/main/jastadd/Analysis.jrag b/src/main/jastadd/Analysis.jrag index 0844b615b18897e9b791ddad58e1532f70258c42..21456331346ac897ee8f597c52e93c1ac8edb498 100644 --- a/src/main/jastadd/Analysis.jrag +++ b/src/main/jastadd/Analysis.jrag @@ -141,7 +141,7 @@ aspect ComponentAnalysis { //--- relationComponentsTransitive --- syn Collection<RelationComponent> TypeDecl.relationComponentsTransitive() { - ArrayList<RelationComponent> list = new ArrayList<>(); + Collection<RelationComponent> list = new ArrayList<>(); if (hasSuper() && getSuper().decl() != null) { list.addAll(getSuper().decl().relationComponentsTransitive()); } @@ -192,7 +192,7 @@ aspect InstanceSupplier { //--- subTypeDecls --- syn Collection<TypeDecl> TypeDecl.subTypeDecls() { - java.util.List<TypeDecl> subDecls = new ArrayList(); + Collection<TypeDecl> subDecls = new ArrayList(); for (TypeDecl decl : program().getTypeDeclList()) { if (decl.hasSuper() && decl.getSuper().getID().equals(getID())) { subDecls.add(decl); diff --git a/src/main/jastadd/DumpTree.jrag b/src/main/jastadd/DumpTree.jrag index 9193b9334fb63901d8dc985b5e5ba091e6a1e710..d1203aeee5ae7b2713571c7ecd9f1c51238482a7 100644 --- a/src/main/jastadd/DumpTree.jrag +++ b/src/main/jastadd/DumpTree.jrag @@ -1,25 +1,18 @@ -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; -import java.lang.reflect.InvocationTargetException; - -// We have been careful to not import many types here because the imports are added for -// _ALL_ AST nodes and can cause collisions in the abstract grammar namespace. - aspect DumpTree { private static final String ASTNode.DUMP_TREE_INDENT = " "; public String ASTNode.dumpTree() { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - dumpTree(new PrintStream(bytes)); + java.io.ByteArrayOutputStream bytes = new java.io.ByteArrayOutputStream(); + dumpTree(new java.io.PrintStream(bytes)); return bytes.toString(); } - public void ASTNode.dumpTree(PrintStream out) { + public void ASTNode.dumpTree(java.io.PrintStream out) { dumpTree(out, ""); out.flush(); } - public void ASTNode.dumpTree(PrintStream out, String indent) { + public void ASTNode.dumpTree(java.io.PrintStream out, String indent) { out.print(indent + getClass().getSimpleName()); out.print(getTokens()); String extra = extraDumpInfo(); @@ -40,26 +33,20 @@ aspect DumpTree { public String ASTNode.extraDumpInfo() { return ""; } public String ASTNode.getTokens() { - java.util.TreeSet<java.lang.reflect.Method> methods = new java.util.TreeSet<>( - new java.util.Comparator<java.lang.reflect.Method>() { - public int compare(java.lang.reflect.Method m1, java.lang.reflect.Method m2) { - return m1.getName().compareTo(m2.getName()); - } - }); + java.util.TreeSet<java.lang.reflect.Method> methods = new java.util.TreeSet<>(Comparator.comparing(Method::getName)); methods.addAll(java.util.Arrays.asList(getClass().getMethods())); - String result = ""; + StringBuilder result = new StringBuilder(); for (java.lang.reflect.Method method : methods) { ASTNodeAnnotation.Token token = method.getAnnotation(ASTNodeAnnotation.Token.class); if (token != null) { try { - result += String.format(" %s=\"%s\"", token.name(), method.invoke(this)); - } catch (IllegalAccessException ignored) { - } catch (InvocationTargetException ignored) { + result.append(String.format(" %s=\"%s\"", token.name(), method.invoke(this))); + } catch (IllegalAccessException | java.lang.reflect.InvocationTargetException ignored) { } } } - return result; + return result.toString(); } -} \ No newline at end of file +} diff --git a/src/main/jastadd/backend/AbstractGrammar.jadd b/src/main/jastadd/backend/AbstractGrammar.jadd index 57c6d25bac5733fc65e788f5f0bd0356ceedf24e..24a92be879f8910ea480bb2c02c989ca2bf6ad0c 100644 --- a/src/main/jastadd/backend/AbstractGrammar.jadd +++ b/src/main/jastadd/backend/AbstractGrammar.jadd @@ -3,6 +3,7 @@ aspect BackendAbstractGrammar { public static String ASTNode.listInterface = "java.util.List"; public static String ASTNode.listClass = "java.util.ArrayList"; public static String ASTNode.jastAddListType = "List"; + public static String ASTNode.jastAddOptType = "Opt"; public static boolean ASTNode.resolverHelper = false; public static boolean ASTNode.serializer = false; diff --git a/src/main/jastadd/backend/Backend.jadd b/src/main/jastadd/backend/Backend.jadd index 96164f9918271f71479c97112b49a7c44fe3e6ee..cc4477d91bac5e0fe442be6130c418c7803abdd7 100644 --- a/src/main/jastadd/backend/Backend.jadd +++ b/src/main/jastadd/backend/Backend.jadd @@ -6,9 +6,6 @@ aspect BackendAspect { } public void Program.generateAspect(StringBuilder sb) { - sb.append("import java.util.Collections;\n"); - sb.append("import java.time.Instant;\n"); - sb.append("import java.time.Period;\n"); sb.append("aspect RelAstAPI {\n"); for (TypeDecl td: getTypeDecls()) { @@ -52,7 +49,7 @@ aspect BackendAspect { return ASTNode.jastAddListType + "<" + getTypeUse() + "> " + getID(); } public String OptComponent.constructorParameter() { - return "Opt<" + getTypeUse() + "> " + getID(); + return ASTNode.jastAddOptType + "<" + getTypeUse() + "> " + getID(); } public String Component.constructorSetMethod() { return "set" + getID(); diff --git a/src/main/jastadd/backend/BidirectionalAPI.jadd b/src/main/jastadd/backend/BidirectionalAPI.jadd index 19eb9de5b54957fbf286b600acae7f4f425c5df1..a2cb558e92da745a348c4f3913a524774e1db720 100644 --- a/src/main/jastadd/backend/BidirectionalAPI.jadd +++ b/src/main/jastadd/backend/BidirectionalAPI.jadd @@ -72,7 +72,7 @@ aspect BackendBidirectionalAPI { sb.append(ind(3) + "}\n"); sb.append(ind(2) + "}\n"); } - sb.append(ind(2) + "return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();\n"); + sb.append(ind(2) + "return l != null ? java.util.Collections.unmodifiableList(l) : java.util.Collections.emptyList();\n"); sb.append(ind(1) + "}\n"); // Add @@ -175,7 +175,7 @@ aspect BackendBidirectionalAPI { sb.append(ind(3) + "}\n"); sb.append(ind(2) + "}\n"); } - sb.append(ind(2) + "return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();\n"); + sb.append(ind(2) + "return l != null ? java.util.Collections.unmodifiableList(l) : java.util.Collections.emptyList();\n"); sb.append(ind(1) + "}\n"); // Add diff --git a/src/main/jastadd/backend/DirectedAPI.jadd b/src/main/jastadd/backend/DirectedAPI.jadd index e5e315e1fff49fd759af0f4c0789b9d3a32c807b..b8d114831838365ae80dc5ec0c881e85d0cf3f25 100644 --- a/src/main/jastadd/backend/DirectedAPI.jadd +++ b/src/main/jastadd/backend/DirectedAPI.jadd @@ -48,7 +48,7 @@ aspect BackendDirectedAPI { sb.append(ind(3) + "}\n"); sb.append(ind(2) + "}\n"); } - sb.append(ind(2) + "return l != null ? Collections.unmodifiableList(l) : Collections.emptyList();\n"); + sb.append(ind(2) + "return l != null ? java.util.Collections.unmodifiableList(l) : java.util.Collections.emptyList();\n"); sb.append(ind(1) + "}\n"); // Add diff --git a/src/main/jastadd/backend/Serializer.jadd b/src/main/jastadd/backend/Serializer.jadd index 9e89e7f54ca786727178ebb8d4817ce49170d3fd..21db37f69f93f2c852528ab334245ce5f3e3d9e0 100644 --- a/src/main/jastadd/backend/Serializer.jadd +++ b/src/main/jastadd/backend/Serializer.jadd @@ -169,10 +169,10 @@ aspect Serializer { case "String": sb.append(ind(indent) + "g.writeStringField(\"" + getID() + "\", get" + getID() + "());\n"); break; - case "Instant": + case "java.time.Instant": sb.append(ind(indent) + "g.writeStringField(\"" + getID() + "\", get" + getID() + "().toString());\n"); break; - case "Period": + case "java.time.Period": sb.append(ind(indent) + "g.writeStringField(\"" + getID() + "\", get" + getID() + "().toString());\n"); break; default: @@ -390,11 +390,11 @@ aspect Serializer { case "String": sb.append(ind(indent) + "element.set" + getID() + "(children.get(\"" + getID() + "\").asText());\n"); break; - case "Instant": - sb.append(ind(indent) + "element.set" + getID() + "(Instant.parse(children.get(\"" + getID() + "\").asText()));\n"); + case "java.time.Instant": + sb.append(ind(indent) + "element.set" + getID() + "(java.time.Instant.parse(children.get(\"" + getID() + "\").asText()));\n"); break; - case "Period": - sb.append(ind(indent) + "element.set" + getID() + "(Period.parse(children.get(\"" + getID() + "\").asText()));\n"); + case "java.time.Period": + sb.append(ind(indent) + "element.set" + getID() + "(java.time.Period.parse(children.get(\"" + getID() + "\").asText()));\n"); break; default: // assume that the type is an enum. there is no way of checking this here diff --git a/src/test/jastadd/serializer-names/Serializer.relast b/src/test/jastadd/serializer-names/Serializer.relast index 6bbd44b8a4ace22be14d9c37b328d903cccda143..9106765c6ee6b8016de898c75efa2f3c38903050 100644 --- a/src/test/jastadd/serializer-names/Serializer.relast +++ b/src/test/jastadd/serializer-names/Serializer.relast @@ -13,8 +13,8 @@ C:NamedElement ::= D1:D [D2:D] D3:D* <C1:char> <C2:Character> <T1:String> <T2> - <N:Instant> - <P:Period> + <N:java.time.Instant> + <P:java.time.Period> <Day:Weekday>; D:NamedElement; diff --git a/src/test/jastadd/serializer/Serializer.relast b/src/test/jastadd/serializer/Serializer.relast index 6bbd44b8a4ace22be14d9c37b328d903cccda143..9106765c6ee6b8016de898c75efa2f3c38903050 100644 --- a/src/test/jastadd/serializer/Serializer.relast +++ b/src/test/jastadd/serializer/Serializer.relast @@ -13,8 +13,8 @@ C:NamedElement ::= D1:D [D2:D] D3:D* <C1:char> <C2:Character> <T1:String> <T2> - <N:Instant> - <P:Period> + <N:java.time.Instant> + <P:java.time.Period> <Day:Weekday>; D:NamedElement;