aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core-generators
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-10-17 20:55:14 +0200
committerDanny van Bruggen <hexagonaal@gmail.com>2017-10-17 20:55:14 +0200
commit179d34079dd694392e6d4e1a111824bbbdd33e01 (patch)
tree50a4e06f6533ec1a1afe47503f0bf633b973e87f /javaparser-core-generators
parentf11004359bf1a61a09d4b7aa98a05af213e521db (diff)
downloadplatform_external_javaparser-179d34079dd694392e6d4e1a111824bbbdd33e01.tar.gz
platform_external_javaparser-179d34079dd694392e6d4e1a111824bbbdd33e01.tar.bz2
platform_external_javaparser-179d34079dd694392e6d4e1a111824bbbdd33e01.zip
Generate accept methods and fix receiver parameters in the pretty printer
Diffstat (limited to 'javaparser-core-generators')
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java1
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/AcceptGenerator.java36
2 files changed, 37 insertions, 0 deletions
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java
index 841923c66..2d133ea4a 100644
--- a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java
+++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/CoreGenerator.java
@@ -58,5 +58,6 @@ public class CoreGenerator {
new GetMetaModelGenerator(sourceRoot).generate();
new MainConstructorGenerator(sourceRoot).generate();
new FinalGenerator(sourceRoot).generate();
+ new AcceptGenerator(sourceRoot).generate();
}
}
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/AcceptGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/AcceptGenerator.java
new file mode 100644
index 000000000..b13ac60cc
--- /dev/null
+++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/node/AcceptGenerator.java
@@ -0,0 +1,36 @@
+package com.github.javaparser.generator.core.node;
+
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
+import com.github.javaparser.ast.body.MethodDeclaration;
+import com.github.javaparser.ast.visitor.GenericVisitor;
+import com.github.javaparser.ast.visitor.VoidVisitor;
+import com.github.javaparser.generator.NodeGenerator;
+import com.github.javaparser.metamodel.BaseNodeMetaModel;
+import com.github.javaparser.utils.SourceRoot;
+
+import static com.github.javaparser.JavaParser.parseBodyDeclaration;
+
+public class AcceptGenerator extends NodeGenerator {
+ private final MethodDeclaration genericAccept;
+ private final MethodDeclaration voidAccept;
+
+ public AcceptGenerator(SourceRoot sourceRoot) {
+ super(sourceRoot);
+ genericAccept = parseBodyDeclaration("@Override public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) { return v.visit(this, arg); }").asMethodDeclaration();
+ voidAccept = parseBodyDeclaration("@Override public <A> void accept(final VoidVisitor<A> v, final A arg) { v.visit(this, arg); }").asMethodDeclaration();
+ }
+
+ @Override
+ protected void generateNode(BaseNodeMetaModel nodeMetaModel, CompilationUnit nodeCu, ClassOrInterfaceDeclaration nodeCoid) {
+ if(nodeMetaModel.isAbstract()){
+ return;
+ }
+ nodeCu.addImport(GenericVisitor.class);
+ nodeCu.addImport(VoidVisitor.class);
+ addOrReplaceWhenSameSignature(nodeCoid, genericAccept);
+ annotateGenerated(genericAccept);
+ addOrReplaceWhenSameSignature(nodeCoid, voidAccept);
+ annotateGenerated(voidAccept);
+ }
+}