aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core/src
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-11-05 01:39:56 +0100
committerDanny van Bruggen <hexagonaal@gmail.com>2017-11-05 01:39:56 +0100
commit660b7248ab889410a598d37bde32bbba7ed0ef4e (patch)
treecc8c83a737970cf79bb95bb2c4eccf6b1a689675 /javaparser-core/src
parent4192f687beb4b5feff069cae78117ca1e83fc870 (diff)
downloadjavaparser-660b7248ab889410a598d37bde32bbba7ed0ef4e.tar.gz
Allow a receiver parameter on constructors
Diffstat (limited to 'javaparser-core/src')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/body/CallableDeclaration.java29
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java21
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java41
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java2
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/metamodel/CallableDeclarationMetaModel.java2
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/metamodel/JavaParserMetaModel.java8
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/metamodel/MethodDeclarationMetaModel.java2
-rw-r--r--javaparser-core/src/main/javacc/java.jj5
8 files changed, 47 insertions, 63 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 a220f2bd9..61f607fb9 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,6 +43,8 @@ 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;
/**
@@ -60,22 +62,25 @@ public abstract class CallableDeclaration<T extends CallableDeclaration<?>> exte
private NodeList<ReferenceType> thrownExceptions;
+ private ReceiverParameter receiverParameter;
+
@AllFieldsConstructor
- public CallableDeclaration(EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions) {
- this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions);
+ CallableDeclaration(EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions, ReceiverParameter receiverParameter) {
+ this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter);
}
/**
* This constructor is used by the parser and is considered private.
*/
@Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
- public CallableDeclaration(TokenRange tokenRange, EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions) {
+ CallableDeclaration(TokenRange tokenRange, EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions, ReceiverParameter receiverParameter) {
super(tokenRange, annotations);
setModifiers(modifiers);
setTypeParameters(typeParameters);
setName(name);
setParameters(parameters);
setThrownExceptions(thrownExceptions);
+ setReceiverParameter(receiverParameter);
customInitialization();
}
@@ -377,4 +382,22 @@ public abstract class CallableDeclaration<T extends CallableDeclaration<?>> exte
public void ifCallableDeclaration(Consumer<CallableDeclaration> action) {
action.accept(this);
}
+
+ @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
+ public Optional<ReceiverParameter> getReceiverParameter() {
+ return Optional.ofNullable(receiverParameter);
+ }
+
+ @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
+ public CallableDeclaration<T> setReceiverParameter(final ReceiverParameter receiverParameter) {
+ if (receiverParameter == this.receiverParameter) {
+ return (CallableDeclaration<T>) this;
+ }
+ notifyPropertyChange(ObservableProperty.RECEIVER_PARAMETER, this.receiverParameter, receiverParameter);
+ if (this.receiverParameter != null)
+ this.receiverParameter.setParentNode(null);
+ this.receiverParameter = receiverParameter;
+ setAsParentNodeOf(receiverParameter);
+ return this;
+ }
}
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 2ae4a9246..a48981bc3 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
@@ -34,9 +34,7 @@ import com.github.javaparser.ast.type.ReferenceType;
import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
-import java.util.Arrays;
import java.util.EnumSet;
-import java.util.List;
import static com.github.javaparser.utils.Utils.assertNotNull;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.visitor.CloneVisitor;
@@ -45,7 +43,6 @@ import com.github.javaparser.metamodel.JavaParserMetaModel;
import javax.annotation.Generated;
import com.github.javaparser.TokenRange;
import com.github.javaparser.resolution.Resolvable;
-import com.github.javaparser.resolution.declarations.ResolvedAnnotationDeclaration;
import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration;
import java.util.function.Consumer;
@@ -62,28 +59,32 @@ public final class ConstructorDeclaration extends CallableDeclaration<Constructo
private BlockStmt body;
public ConstructorDeclaration() {
- this(null, EnumSet.noneOf(Modifier.class), new NodeList<>(), new NodeList<>(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt());
+ this(null, EnumSet.noneOf(Modifier.class), new NodeList<>(), new NodeList<>(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt(), null);
}
public ConstructorDeclaration(String name) {
- this(null, EnumSet.of(Modifier.PUBLIC), new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt());
+ this(null, EnumSet.of(Modifier.PUBLIC), new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt(), null);
}
public ConstructorDeclaration(EnumSet<Modifier> modifiers, String name) {
- this(null, modifiers, new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt());
+ this(null, modifiers, new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt(), null);
}
- @AllFieldsConstructor
public ConstructorDeclaration(EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions, BlockStmt body) {
- this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body);
+ this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body, null);
+ }
+
+ @AllFieldsConstructor
+ public ConstructorDeclaration(EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) {
+ this(null, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, body, receiverParameter);
}
/**
* This constructor is used by the parser and is considered private.
*/
@Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
- public ConstructorDeclaration(TokenRange tokenRange, EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions, BlockStmt body) {
- super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions);
+ public ConstructorDeclaration(TokenRange tokenRange, EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) {
+ super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter);
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 dc701e68a..658a2d8ef 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
@@ -36,9 +36,7 @@ import com.github.javaparser.ast.type.Type;
import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
-import java.util.Arrays;
import java.util.EnumSet;
-import java.util.List;
import java.util.Optional;
import static com.github.javaparser.ast.Modifier.*;
import static com.github.javaparser.utils.Utils.assertNotNull;
@@ -67,8 +65,6 @@ public final class MethodDeclaration extends CallableDeclaration<MethodDeclarati
private BlockStmt body;
- private ReceiverParameter receiverParameter;
-
public MethodDeclaration() {
this(null, EnumSet.noneOf(Modifier.class), new NodeList<>(), new NodeList<>(), new ClassOrInterfaceType(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt(), null);
}
@@ -102,7 +98,7 @@ public final class MethodDeclaration extends CallableDeclaration<MethodDeclarati
*/
@Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
public MethodDeclaration(TokenRange tokenRange, EnumSet<Modifier> modifiers, NodeList<AnnotationExpr> annotations, NodeList<TypeParameter> typeParameters, Type type, SimpleName name, NodeList<Parameter> parameters, NodeList<ReferenceType> thrownExceptions, BlockStmt body, ReceiverParameter receiverParameter) {
- super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions);
+ super(tokenRange, modifiers, annotations, typeParameters, name, parameters, thrownExceptions, receiverParameter);
setType(type);
setBody(body);
setReceiverParameter(receiverParameter);
@@ -282,12 +278,6 @@ public final class MethodDeclaration extends CallableDeclaration<MethodDeclarati
return true;
}
}
- if (receiverParameter != null) {
- if (node == receiverParameter) {
- removeReceiverParameter();
- return true;
- }
- }
return super.remove(node);
}
@@ -319,12 +309,6 @@ public final class MethodDeclaration extends CallableDeclaration<MethodDeclarati
return true;
}
}
- if (receiverParameter != null) {
- if (node == receiverParameter) {
- setReceiverParameter((ReceiverParameter) replacementNode);
- return true;
- }
- }
if (node == type) {
setType((Type) replacementNode);
return true;
@@ -353,27 +337,4 @@ public final class MethodDeclaration extends CallableDeclaration<MethodDeclarati
public ResolvedMethodDeclaration resolve() {
return getSymbolResolver().resolveDeclaration(this, ResolvedMethodDeclaration.class);
}
-
- @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
- public Optional<ReceiverParameter> 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 5f77fc76a..43cd1487f 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
@@ -189,7 +189,7 @@ public class CloneVisitor implements GenericVisitor<Visitable, Object> {
NodeList<TypeParameter> typeParameters = cloneList(n.getTypeParameters(), arg);
NodeList<AnnotationExpr> 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);
+ ConstructorDeclaration r = new ConstructorDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, typeParameters, name, parameters, thrownExceptions, body, null);
r.setComment(comment);
return r;
}
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 358ff424c..040762f0e 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,6 +19,8 @@ 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 fa5132fa4..6c7c84444 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,6 +23,7 @@ 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);
@@ -68,6 +69,7 @@ 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);
@@ -91,7 +93,7 @@ public final class JavaParserMetaModel {
methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.parametersPropertyMetaModel);
methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.thrownExceptionsPropertyMetaModel);
methodDeclarationMetaModel.getConstructorParameters().add(methodDeclarationMetaModel.bodyPropertyMetaModel);
- methodDeclarationMetaModel.getConstructorParameters().add(methodDeclarationMetaModel.receiverParameterPropertyMetaModel);
+ methodDeclarationMetaModel.getConstructorParameters().add(callableDeclarationMetaModel.receiverParameterPropertyMetaModel);
parameterMetaModel.getConstructorParameters().add(parameterMetaModel.modifiersPropertyMetaModel);
parameterMetaModel.getConstructorParameters().add(parameterMetaModel.annotationsPropertyMetaModel);
parameterMetaModel.getConstructorParameters().add(parameterMetaModel.typePropertyMetaModel);
@@ -365,6 +367,8 @@ 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);
@@ -445,8 +449,6 @@ 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 8378bd9aa..74aaeae69 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,7 +10,5 @@ public class MethodDeclarationMetaModel extends CallableDeclarationMetaModel {
public PropertyMetaModel bodyPropertyMetaModel;
- public PropertyMetaModel receiverParameterPropertyMetaModel;
-
public PropertyMetaModel typePropertyMetaModel;
}
diff --git a/javaparser-core/src/main/javacc/java.jj b/javaparser-core/src/main/javacc/java.jj
index 9eccde9da..c38b1e429 100644
--- a/javaparser-core/src/main/javacc/java.jj
+++ b/javaparser-core/src/main/javacc/java.jj
@@ -1304,10 +1304,7 @@ ConstructorDeclaration ConstructorDeclaration(ModifierHolder modifier):
if (exConsInv != null) {
stmts = prepend(stmts, exConsInv);
}
- 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));
+ return new ConstructorDeclaration(range(begin, token()), modifier.modifiers, modifier.annotations, typeParameters.list, name, parameters.a, throws_, new BlockStmt(range(blockBegin, token()), stmts), parameters.b);
}
}