From 27a1a23d96cf8a1d4b34cdd28f10730d517673e2 Mon Sep 17 00:00:00 2001 From: Danny van Bruggen Date: Tue, 17 Oct 2017 19:48:52 +0200 Subject: Put receiver parameter only in method declarations --- .../javaparser/ast/body/CallableDeclaration.java | 46 ++-------------------- .../ast/body/ConstructorDeclaration.java | 16 ++++---- .../javaparser/ast/body/MethodDeclaration.java | 40 ++++++++++++++++++- .../javaparser/ast/visitor/CloneVisitor.java | 5 +-- .../javaparser/ast/visitor/EqualsVisitor.java | 6 +-- .../ast/visitor/GenericListVisitorAdapter.java | 15 +++---- .../ast/visitor/GenericVisitorAdapter.java | 15 +++---- .../javaparser/ast/visitor/HashCodeVisitor.java | 4 +- .../javaparser/ast/visitor/ModifierVisitor.java | 6 +-- .../ast/visitor/NoCommentEqualsVisitor.java | 6 +-- .../ast/visitor/NoCommentHashCodeVisitor.java | 4 +- .../javaparser/ast/visitor/VoidVisitorAdapter.java | 3 +- .../metamodel/CallableDeclarationMetaModel.java | 2 - .../javaparser/metamodel/JavaParserMetaModel.java | 8 ++-- .../metamodel/MethodDeclarationMetaModel.java | 2 + .../javaparser/printer/ConcreteSyntaxModel.java | 8 ++++ .../javaparser/printer/PrettyPrintVisitor.java | 4 -- javaparser-core/src/main/javacc/java.jj | 5 ++- 18 files changed, 90 insertions(+), 105 deletions(-) diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java index 4f0b3e61b..0e9f9d80b 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java @@ -43,7 +43,6 @@ import java.util.List; import static com.github.javaparser.utils.Utils.assertNotNull; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; -import java.util.Optional; import java.util.function.Consumer; /** @@ -61,23 +60,20 @@ public abstract class CallableDeclaration> exte private NodeList thrownExceptions; - private ReceiverParameter receiverParameter; - @AllFieldsConstructor - public CallableDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, ReceiverParameter receiverParameter) { - this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter); + public CallableDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions) { + this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions); } /**This constructor is used by the parser and is considered private.*/ @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator") - public CallableDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, ReceiverParameter receiverParameter) { + public CallableDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions) { super(tokenRange, annotations); setModifiers(modifiers); setTypeParameters(typeParameters); setName(name); setParameters(parameters); setThrownExceptions(thrownExceptions); - setReceiverParameter(receiverParameter); customInitialization(); } @@ -222,12 +218,6 @@ public abstract class CallableDeclaration> exte return true; } } - if (receiverParameter != null) { - if (node == receiverParameter) { - removeReceiverParameter(); - return true; - } - } for (int i = 0; i < thrownExceptions.size(); i++) { if (thrownExceptions.get(i) == node) { thrownExceptions.remove(i); @@ -354,12 +344,6 @@ public abstract class CallableDeclaration> exte return true; } } - if (receiverParameter != null) { - if (node == receiverParameter) { - setReceiverParameter((ReceiverParameter) replacementNode); - return true; - } - } for (int i = 0; i < thrownExceptions.size(); i++) { if (thrownExceptions.get(i) == node) { thrownExceptions.set(i, (ReferenceType) replacementNode); @@ -391,28 +375,4 @@ public abstract class CallableDeclaration> exte public void ifCallableDeclaration(Consumer action) { action.accept(this); } - - @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") - public Optional getReceiverParameter() { - return Optional.ofNullable(receiverParameter); - } - - @SuppressWarnings("unchecked") - @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") - public T setReceiverParameter(final ReceiverParameter receiverParameter) { - if (receiverParameter == this.receiverParameter) { - return (T) this; - } - notifyPropertyChange(ObservableProperty.RECEIVER_PARAMETER, this.receiverParameter, receiverParameter); - if (this.receiverParameter != null) - this.receiverParameter.setParentNode(null); - this.receiverParameter = receiverParameter; - setAsParentNodeOf(receiverParameter); - return (T) this; - } - - @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator") - public CallableDeclaration removeReceiverParameter() { - return setReceiverParameter((ReceiverParameter) null); - } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java index 8c8a979b5..c2aea12b2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java @@ -51,7 +51,7 @@ import java.util.function.Consumer; * *
All annotations preceding the name will be set on this object, not on the class. * JavaParser doesn't know if it they are applicable to the method or the class. - * + * * @author Julio Vilmar Gesser */ public final class ConstructorDeclaration extends CallableDeclaration implements NodeWithBlockStmt, NodeWithAccessModifiers, NodeWithJavadoc, NodeWithDeclaration, NodeWithSimpleName, NodeWithParameters, NodeWithThrownExceptions, NodeWithTypeParameters { @@ -59,26 +59,26 @@ public final class ConstructorDeclaration extends CallableDeclaration(), new NodeList<>(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); + this(null, EnumSet.noneOf(Modifier.class), new NodeList<>(), new NodeList<>(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt()); } public ConstructorDeclaration(String name) { - this(null, EnumSet.of(Modifier.PUBLIC), new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); + this(null, EnumSet.of(Modifier.PUBLIC), new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt()); } public ConstructorDeclaration(EnumSet modifiers, String name) { - this(null, modifiers, new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); + this(null, modifiers, new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt()); } @AllFieldsConstructor - public ConstructorDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) { - this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body, receiverParameter); + public ConstructorDeclaration(EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body) { + this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body); } /**This constructor is used by the parser and is considered private.*/ @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator") - public ConstructorDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) { - super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter); + public ConstructorDeclaration(TokenRange tokenRange, EnumSet modifiers, NodeList annotations, NodeList typeParameters, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body) { + super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions); setBody(body); customInitialization(); } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java index 7049dece9..e39607e9c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java @@ -67,6 +67,8 @@ public final class MethodDeclaration extends CallableDeclaration(), new NodeList<>(), new ClassOrInterfaceType(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt(), null); } @@ -94,9 +96,10 @@ public final class MethodDeclaration extends CallableDeclaration modifiers, NodeList annotations, NodeList typeParameters, Type type, SimpleName name, NodeList parameters, NodeList thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) { - super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter); + super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions); setType(type); setBody(body); + setReceiverParameter(receiverParameter); customInitialization(); } @@ -271,6 +274,12 @@ public final class MethodDeclaration extends CallableDeclaration getReceiverParameter() { + return Optional.ofNullable(receiverParameter); + } + + @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") + public MethodDeclaration setReceiverParameter(final ReceiverParameter receiverParameter) { + if (receiverParameter == this.receiverParameter) { + return (MethodDeclaration) this; + } + notifyPropertyChange(ObservableProperty.RECEIVER_PARAMETER, this.receiverParameter, receiverParameter); + if (this.receiverParameter != null) + this.receiverParameter.setParentNode(null); + this.receiverParameter = receiverParameter; + setAsParentNodeOf(receiverParameter); + return this; + } + + @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator") + public MethodDeclaration removeReceiverParameter() { + return setReceiverParameter((ReceiverParameter) null); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java index e5b88e1a1..5f77fc76a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java @@ -185,12 +185,11 @@ public class CloneVisitor implements GenericVisitor { BlockStmt body = cloneNode(n.getBody(), arg); SimpleName name = cloneNode(n.getName(), arg); NodeList parameters = cloneList(n.getParameters(), arg); - ReceiverParameter receiverParameter = cloneNode(n.getReceiverParameter(), arg); NodeList thrownExceptions = cloneList(n.getThrownExceptions(), arg); NodeList typeParameters = cloneList(n.getTypeParameters(), arg); NodeList annotations = cloneList(n.getAnnotations(), arg); Comment comment = cloneNode(n.getComment(), arg); - ConstructorDeclaration r = new ConstructorDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, typeParameters, name, parameters, thrownExceptions, body, receiverParameter); + ConstructorDeclaration r = new ConstructorDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, typeParameters, name, parameters, thrownExceptions, body); r.setComment(comment); return r; } @@ -199,10 +198,10 @@ public class CloneVisitor implements GenericVisitor { @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") public Visitable visit(final MethodDeclaration n, final Object arg) { BlockStmt body = cloneNode(n.getBody(), arg); + ReceiverParameter receiverParameter = cloneNode(n.getReceiverParameter(), arg); Type type = cloneNode(n.getType(), arg); SimpleName name = cloneNode(n.getName(), arg); NodeList parameters = cloneList(n.getParameters(), arg); - ReceiverParameter receiverParameter = cloneNode(n.getReceiverParameter(), arg); NodeList thrownExceptions = cloneList(n.getThrownExceptions(), arg); NodeList typeParameters = cloneList(n.getTypeParameters(), arg); NodeList annotations = cloneList(n.getAnnotations(), arg); diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/EqualsVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/EqualsVisitor.java index 49a2ee278..72e7afcc1 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/EqualsVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/EqualsVisitor.java @@ -338,8 +338,6 @@ public class EqualsVisitor implements GenericVisitor { return false; if (!nodesEquals(n.getParameters(), n2.getParameters())) return false; - if (!nodeEquals(n.getReceiverParameter(), n2.getReceiverParameter())) - return false; if (!nodesEquals(n.getThrownExceptions(), n2.getThrownExceptions())) return false; if (!nodesEquals(n.getTypeParameters(), n2.getTypeParameters())) @@ -357,6 +355,8 @@ public class EqualsVisitor implements GenericVisitor { final MethodDeclaration n2 = (MethodDeclaration) arg; if (!nodeEquals(n.getBody(), n2.getBody())) return false; + if (!nodeEquals(n.getReceiverParameter(), n2.getReceiverParameter())) + return false; if (!nodeEquals(n.getType(), n2.getType())) return false; if (!objEquals(n.getModifiers(), n2.getModifiers())) @@ -365,8 +365,6 @@ public class EqualsVisitor implements GenericVisitor { return false; if (!nodesEquals(n.getParameters(), n2.getParameters())) return false; - if (!nodeEquals(n.getReceiverParameter(), n2.getReceiverParameter())) - return false; if (!nodesEquals(n.getThrownExceptions(), n2.getThrownExceptions())) return false; if (!nodesEquals(n.getTypeParameters(), n2.getTypeParameters())) diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapter.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapter.java index 14ae6c5b5..b6cad5bae 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapter.java @@ -562,11 +562,6 @@ public abstract class GenericListVisitorAdapter implements GenericVisitor< if (tmp != null) result.addAll(tmp); } - if (n.getReceiverParameter().isPresent()) { - tmp = n.getReceiverParameter().get().accept(this, arg); - if (tmp != null) - result.addAll(tmp); - } { tmp = n.getThrownExceptions().accept(this, arg); if (tmp != null) @@ -1190,6 +1185,11 @@ public abstract class GenericListVisitorAdapter implements GenericVisitor< if (tmp != null) result.addAll(tmp); } + if (n.getReceiverParameter().isPresent()) { + tmp = n.getReceiverParameter().get().accept(this, arg); + if (tmp != null) + result.addAll(tmp); + } { tmp = n.getType().accept(this, arg); if (tmp != null) @@ -1205,11 +1205,6 @@ public abstract class GenericListVisitorAdapter implements GenericVisitor< if (tmp != null) result.addAll(tmp); } - if (n.getReceiverParameter().isPresent()) { - tmp = n.getReceiverParameter().get().accept(this, arg); - if (tmp != null) - result.addAll(tmp); - } { tmp = n.getThrownExceptions().accept(this, arg); if (tmp != null) diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericVisitorAdapter.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericVisitorAdapter.java index 5b4bf55c0..14872667c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericVisitorAdapter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/GenericVisitorAdapter.java @@ -502,11 +502,6 @@ public abstract class GenericVisitorAdapter implements GenericVisitor implements GenericVisitor implements GenericVisitor { @Generated("com.github.javaparser.generator.core.visitor.HashCodeVisitorGenerator") public Integer visit(final ConstructorDeclaration n, final Void arg) { - return (n.getBody().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getReceiverParameter().isPresent() ? n.getReceiverParameter().get().accept(this, arg) : 0) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)) * 31 + (n.getComment().isPresent() ? n.getComment().get().accept(this, arg) : 0); + return (n.getBody().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)) * 31 + (n.getComment().isPresent() ? n.getComment().get().accept(this, arg) : 0); } @Generated("com.github.javaparser.generator.core.visitor.HashCodeVisitorGenerator") @@ -304,7 +304,7 @@ public class HashCodeVisitor implements GenericVisitor { @Generated("com.github.javaparser.generator.core.visitor.HashCodeVisitorGenerator") public Integer visit(final MethodDeclaration n, final Void arg) { - return (n.getBody().isPresent() ? n.getBody().get().accept(this, arg) : 0) * 31 + (n.getType().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getReceiverParameter().isPresent() ? n.getReceiverParameter().get().accept(this, arg) : 0) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)) * 31 + (n.getComment().isPresent() ? n.getComment().get().accept(this, arg) : 0); + return (n.getBody().isPresent() ? n.getBody().get().accept(this, arg) : 0) * 31 + (n.getReceiverParameter().isPresent() ? n.getReceiverParameter().get().accept(this, arg) : 0) * 31 + (n.getType().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)) * 31 + (n.getComment().isPresent() ? n.getComment().get().accept(this, arg) : 0); } @Generated("com.github.javaparser.generator.core.visitor.HashCodeVisitorGenerator") diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/ModifierVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/ModifierVisitor.java index 0a8619055..5a62f025a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/ModifierVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/ModifierVisitor.java @@ -321,7 +321,6 @@ public class ModifierVisitor implements GenericVisitor { BlockStmt body = (BlockStmt) n.getBody().accept(this, arg); SimpleName name = (SimpleName) n.getName().accept(this, arg); NodeList parameters = modifyList(n.getParameters(), arg); - ReceiverParameter receiverParameter = n.getReceiverParameter().map(s -> (ReceiverParameter) s.accept(this, arg)).orElse(null); NodeList thrownExceptions = modifyList(n.getThrownExceptions(), arg); NodeList typeParameters = modifyList(n.getTypeParameters(), arg); NodeList annotations = modifyList(n.getAnnotations(), arg); @@ -331,7 +330,6 @@ public class ModifierVisitor implements GenericVisitor { n.setBody(body); n.setName(name); n.setParameters(parameters); - n.setReceiverParameter(receiverParameter); n.setThrownExceptions(thrownExceptions); n.setTypeParameters(typeParameters); n.setAnnotations(annotations); @@ -649,10 +647,10 @@ public class ModifierVisitor implements GenericVisitor { @Generated("com.github.javaparser.generator.core.visitor.ModifierVisitorGenerator") public Visitable visit(final MethodDeclaration n, final A arg) { BlockStmt body = n.getBody().map(s -> (BlockStmt) s.accept(this, arg)).orElse(null); + ReceiverParameter receiverParameter = n.getReceiverParameter().map(s -> (ReceiverParameter) s.accept(this, arg)).orElse(null); Type type = (Type) n.getType().accept(this, arg); SimpleName name = (SimpleName) n.getName().accept(this, arg); NodeList parameters = modifyList(n.getParameters(), arg); - ReceiverParameter receiverParameter = n.getReceiverParameter().map(s -> (ReceiverParameter) s.accept(this, arg)).orElse(null); NodeList thrownExceptions = modifyList(n.getThrownExceptions(), arg); NodeList typeParameters = modifyList(n.getTypeParameters(), arg); NodeList annotations = modifyList(n.getAnnotations(), arg); @@ -660,10 +658,10 @@ public class ModifierVisitor implements GenericVisitor { if (type == null || name == null) return null; n.setBody(body); + n.setReceiverParameter(receiverParameter); n.setType(type); n.setName(name); n.setParameters(parameters); - n.setReceiverParameter(receiverParameter); n.setThrownExceptions(thrownExceptions); n.setTypeParameters(typeParameters); n.setAnnotations(annotations); diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/NoCommentEqualsVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/NoCommentEqualsVisitor.java index 8e6862995..b7a9914df 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/NoCommentEqualsVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/NoCommentEqualsVisitor.java @@ -267,8 +267,6 @@ public class NoCommentEqualsVisitor implements GenericVisitor { @Generated("com.github.javaparser.generator.core.visitor.NoCommentHashCodeVisitorGenerator") public Integer visit(final ConstructorDeclaration n, final Void arg) { - return (n.getBody().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getReceiverParameter().isPresent() ? n.getReceiverParameter().get().accept(this, arg) : 0) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)); + return (n.getBody().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)); } @Generated("com.github.javaparser.generator.core.visitor.NoCommentHashCodeVisitorGenerator") @@ -296,7 +296,7 @@ public class NoCommentHashCodeVisitor implements GenericVisitor { @Generated("com.github.javaparser.generator.core.visitor.NoCommentHashCodeVisitorGenerator") public Integer visit(final MethodDeclaration n, final Void arg) { - return (n.getBody().isPresent() ? n.getBody().get().accept(this, arg) : 0) * 31 + (n.getType().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getReceiverParameter().isPresent() ? n.getReceiverParameter().get().accept(this, arg) : 0) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)); + return (n.getBody().isPresent() ? n.getBody().get().accept(this, arg) : 0) * 31 + (n.getReceiverParameter().isPresent() ? n.getReceiverParameter().get().accept(this, arg) : 0) * 31 + (n.getType().accept(this, arg)) * 31 + (n.getModifiers().hashCode()) * 31 + (n.getName().accept(this, arg)) * 31 + (n.getParameters().accept(this, arg)) * 31 + (n.getThrownExceptions().accept(this, arg)) * 31 + (n.getTypeParameters().accept(this, arg)) * 31 + (n.getAnnotations().accept(this, arg)); } @Generated("com.github.javaparser.generator.core.visitor.NoCommentHashCodeVisitorGenerator") diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/VoidVisitorAdapter.java b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/VoidVisitorAdapter.java index 6ece2a302..02f530a9a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/VoidVisitorAdapter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/visitor/VoidVisitorAdapter.java @@ -208,7 +208,6 @@ public abstract class VoidVisitorAdapter implements VoidVisitor { n.getBody().accept(this, arg); n.getName().accept(this, arg); n.getParameters().forEach(p -> p.accept(this, arg)); - n.getReceiverParameter().ifPresent(l -> l.accept(this, arg)); n.getThrownExceptions().forEach(p -> p.accept(this, arg)); n.getTypeParameters().forEach(p -> p.accept(this, arg)); n.getAnnotations().forEach(p -> p.accept(this, arg)); @@ -408,10 +407,10 @@ public abstract class VoidVisitorAdapter implements VoidVisitor { @Generated("com.github.javaparser.generator.core.visitor.VoidVisitorAdapterGenerator") public void visit(final MethodDeclaration n, final A arg) { n.getBody().ifPresent(l -> l.accept(this, arg)); + n.getReceiverParameter().ifPresent(l -> l.accept(this, arg)); n.getType().accept(this, arg); n.getName().accept(this, arg); n.getParameters().forEach(p -> p.accept(this, arg)); - n.getReceiverParameter().ifPresent(l -> l.accept(this, arg)); n.getThrownExceptions().forEach(p -> p.accept(this, arg)); n.getTypeParameters().forEach(p -> p.accept(this, arg)); n.getAnnotations().forEach(p -> p.accept(this, arg)); diff --git a/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java b/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java index 040762f0e..358ff424c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java @@ -19,8 +19,6 @@ public class CallableDeclarationMetaModel extends BodyDeclarationMetaModel { public PropertyMetaModel parametersPropertyMetaModel; - public PropertyMetaModel receiverParameterPropertyMetaModel; - public PropertyMetaModel thrownExceptionsPropertyMetaModel; public PropertyMetaModel typeParametersPropertyMetaModel; diff --git a/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java b/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java index 6c7c84444..fa5132fa4 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java @@ -23,7 +23,6 @@ public final class JavaParserMetaModel { callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.namePropertyMetaModel); callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.parametersPropertyMetaModel); callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); - callableDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); typeMetaModel.getConstructorParameters().add(typeMetaModel.annotationsPropertyMetaModel); annotationExprMetaModel.getConstructorParameters().add(annotationExprMetaModel.namePropertyMetaModel); typeDeclarationMetaModel.getConstructorParameters().add(typeDeclarationMetaModel.modifiersPropertyMetaModel); @@ -69,7 +68,6 @@ public final class JavaParserMetaModel { constructorDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.parametersPropertyMetaModel); constructorDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); constructorDeclarationMetaModel.getConstructorParameters().add(constructorDeclarationMetaModel.bodyPropertyMetaModel); - constructorDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); enumConstantDeclarationMetaModel.getConstructorParameters().add(bodyDeclarationMetaModel.annotationsPropertyMetaModel); enumConstantDeclarationMetaModel.getConstructorParameters().add(enumConstantDeclarationMetaModel.namePropertyMetaModel); enumConstantDeclarationMetaModel.getConstructorParameters().add(enumConstantDeclarationMetaModel.argumentsPropertyMetaModel); @@ -93,7 +91,7 @@ public final class JavaParserMetaModel { methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.parametersPropertyMetaModel); methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); methodDeclarationMetaModel.getConstructorParameters().add(methodDeclarationMetaModel.bodyPropertyMetaModel); - methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); + methodDeclarationMetaModel.getConstructorParameters().add(methodDeclarationMetaModel.receiverParameterPropertyMetaModel); parameterMetaModel.getConstructorParameters().add(parameterMetaModel.modifiersPropertyMetaModel); parameterMetaModel.getConstructorParameters().add(parameterMetaModel.annotationsPropertyMetaModel); parameterMetaModel.getConstructorParameters().add(parameterMetaModel.typePropertyMetaModel); @@ -367,8 +365,6 @@ public final class JavaParserMetaModel { callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.namePropertyMetaModel); callableDeclarationMetaModel.parametersPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "parameters", com.github.javaparser.ast.body.Parameter.class, Optional.of(parameterMetaModel), false, false, true, false, false); callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.parametersPropertyMetaModel); - callableDeclarationMetaModel.receiverParameterPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "receiverParameter", com.github.javaparser.ast.body.ReceiverParameter.class, Optional.of(receiverParameterMetaModel), true, false, false, false, false); - callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel); callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "thrownExceptions", com.github.javaparser.ast.type.ReferenceType.class, Optional.of(referenceTypeMetaModel), false, false, true, false, false); callableDeclarationMetaModel.getDeclaredPropertyMetaModels().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel); callableDeclarationMetaModel.typeParametersPropertyMetaModel = new PropertyMetaModel(callableDeclarationMetaModel, "typeParameters", com.github.javaparser.ast.type.TypeParameter.class, Optional.of(typeParameterMetaModel), false, false, true, false, false); @@ -449,6 +445,8 @@ public final class JavaParserMetaModel { initializerDeclarationMetaModel.getDeclaredPropertyMetaModels().add(initializerDeclarationMetaModel.isStaticPropertyMetaModel); methodDeclarationMetaModel.bodyPropertyMetaModel = new PropertyMetaModel(methodDeclarationMetaModel, "body", com.github.javaparser.ast.stmt.BlockStmt.class, Optional.of(blockStmtMetaModel), true, false, false, false, false); methodDeclarationMetaModel.getDeclaredPropertyMetaModels().add(methodDeclarationMetaModel.bodyPropertyMetaModel); + methodDeclarationMetaModel.receiverParameterPropertyMetaModel = new PropertyMetaModel(methodDeclarationMetaModel, "receiverParameter", com.github.javaparser.ast.body.ReceiverParameter.class, Optional.of(receiverParameterMetaModel), true, false, false, false, false); + methodDeclarationMetaModel.getDeclaredPropertyMetaModels().add(methodDeclarationMetaModel.receiverParameterPropertyMetaModel); methodDeclarationMetaModel.typePropertyMetaModel = new PropertyMetaModel(methodDeclarationMetaModel, "type", com.github.javaparser.ast.type.Type.class, Optional.of(typeMetaModel), false, false, false, false, false); methodDeclarationMetaModel.getDeclaredPropertyMetaModels().add(methodDeclarationMetaModel.typePropertyMetaModel); parameterMetaModel.annotationsPropertyMetaModel = new PropertyMetaModel(parameterMetaModel, "annotations", com.github.javaparser.ast.expr.AnnotationExpr.class, Optional.of(annotationExprMetaModel), false, false, true, false, false); diff --git a/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java b/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java index 74aaeae69..8378bd9aa 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java @@ -10,5 +10,7 @@ public class MethodDeclarationMetaModel extends CallableDeclarationMetaModel { public PropertyMetaModel bodyPropertyMetaModel; + public PropertyMetaModel receiverParameterPropertyMetaModel; + public PropertyMetaModel typePropertyMetaModel; } diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/ConcreteSyntaxModel.java b/javaparser-core/src/main/java/com/github/javaparser/printer/ConcreteSyntaxModel.java index 79a7f0134..fb308c78b 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/ConcreteSyntaxModel.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/ConcreteSyntaxModel.java @@ -214,6 +214,7 @@ public class ConcreteSyntaxModel { space(), child(ObservableProperty.NAME), token(GeneratedJavaParserConstants.LPAREN), + conditional(ObservableProperty.RECEIVER_PARAMETER, IS_PRESENT, sequence(child(ObservableProperty.RECEIVER_PARAMETER), comma())), list(ObservableProperty.PARAMETERS, sequence(comma(), space()), none(), none()), token(GeneratedJavaParserConstants.RPAREN), list(ObservableProperty.THROWN_EXCEPTIONS, sequence(comma(), space()), sequence(space(), token(GeneratedJavaParserConstants.THROWS), space()), none()), @@ -231,6 +232,13 @@ public class ConcreteSyntaxModel { space(), child(ObservableProperty.NAME))); + concreteSyntaxModelByClass.put(ReceiverParameter.class, sequence( + comment(), + list(ObservableProperty.ANNOTATIONS, CsmElement.space(), CsmElement.none(), CsmElement.space()), + child(ObservableProperty.TYPE), + space(), + child(ObservableProperty.NAME))); + concreteSyntaxModelByClass.put(VariableDeclarator.class, sequence( comment(), child(ObservableProperty.NAME), diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java index 6d6580e8d..efde0667c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java @@ -747,10 +747,6 @@ public class PrettyPrintVisitor implements VoidVisitor { n.getName().accept(this, arg); printer.print("("); - n.getReceiverParameter().ifPresent(rp -> { - rp.accept(this, arg); - printer.print(", "); - }); if (!n.getParameters().isEmpty()) { for (final Iterator i = n.getParameters().iterator(); i.hasNext(); ) { final Parameter p = i.next(); diff --git a/javaparser-core/src/main/javacc/java.jj b/javaparser-core/src/main/javacc/java.jj index c38b1e429..9eccde9da 100644 --- a/javaparser-core/src/main/javacc/java.jj +++ b/javaparser-core/src/main/javacc/java.jj @@ -1304,7 +1304,10 @@ ConstructorDeclaration ConstructorDeclaration(ModifierHolder modifier): if (exConsInv != null) { stmts = prepend(stmts, exConsInv); } - return new ConstructorDeclaration(range(begin, token()), modifier.modifiers, modifier.annotations, typeParameters.list, name, parameters.a, throws_, new BlockStmt(range(blockBegin, token()), stmts), parameters.b); + if (parameters.b != null) { + addProblem("The receiver cannot be used in a static context."); + } + return new ConstructorDeclaration(range(begin, token()), modifier.modifiers, modifier.annotations, typeParameters.list, name, parameters.a, throws_, new BlockStmt(range(blockBegin, token()), stmts)); } } -- cgit v1.2.3