diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2017-10-17 20:55:14 +0200 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2017-10-17 20:55:14 +0200 |
commit | 179d34079dd694392e6d4e1a111824bbbdd33e01 (patch) | |
tree | 50a4e06f6533ec1a1afe47503f0bf633b973e87f /javaparser-core-generators | |
parent | f11004359bf1a61a09d4b7aa98a05af213e521db (diff) | |
download | platform_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')
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); + } +} |