aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-09-13 21:21:54 +0200
committerDanny van Bruggen <hexagonaal@gmail.com>2017-09-13 21:21:54 +0200
commit473e23020b61bd78eb8e56c120c425734aed7df1 (patch)
tree059f2f24654e39e671f3f20ed4ae0029251c0fa6 /javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java
parent9a1e5d5496fa2c69031209637a9078252d0e1087 (diff)
downloadjavaparser-473e23020b61bd78eb8e56c120c425734aed7df1.tar.gz
Add origin information to ArrayType
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java59
1 files changed, 50 insertions, 9 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java
index 00c76cae9..647147334 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java
@@ -35,7 +35,6 @@ import com.github.javaparser.metamodel.JavaParserMetaModel;
import com.github.javaparser.utils.Pair;
import javax.annotation.Generated;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import static com.github.javaparser.ast.NodeList.nodeList;
@@ -47,22 +46,35 @@ import static com.github.javaparser.utils.Utils.assertNotNull;
*/
public final class ArrayType extends ReferenceType implements NodeWithAnnotations<ArrayType> {
+ /**
+ * The origin of a pair of array brackets [].
+ */
+ public enum Origin {
+
+ /** The [] were found on the name, like "int a[]" or "String abc()[][]" */
+ NAME, /** The [] were found on the type, like "int[] a" or "String[][] abc()" */
+ TYPE
+ }
+
private Type componentType;
+ private Origin origin;
+
@AllFieldsConstructor
- public ArrayType(Type componentType, NodeList<AnnotationExpr> annotations) {
- this(null, componentType, annotations);
+ public ArrayType(Type componentType, Origin origin, NodeList<AnnotationExpr> annotations) {
+ this(null, componentType, origin, annotations);
}
public ArrayType(Type type, AnnotationExpr... annotations) {
- this(type, nodeList(annotations));
+ this(type, Origin.TYPE, nodeList(annotations));
}
/**This constructor is used by the parser and is considered private.*/
@Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
- public ArrayType(TokenRange tokenRange, Type componentType, NodeList<AnnotationExpr> annotations) {
+ public ArrayType(TokenRange tokenRange, Type componentType, Origin origin, NodeList<AnnotationExpr> annotations) {
super(tokenRange, annotations);
setComponentType(componentType);
+ setOrigin(origin);
customInitialization();
}
@@ -111,7 +123,7 @@ public final class ArrayType extends ReferenceType implements NodeWithAnnotation
if (type.getTokenRange().isPresent() && pair.getTokenRange().isPresent()) {
tokenRange = new TokenRange(type.getTokenRange().get().getBegin(), pair.getTokenRange().get().getEnd());
}
- type = new ArrayType(tokenRange, type, pair.getAnnotations());
+ type = new ArrayType(tokenRange, type, pair.getOrigin(), pair.getAnnotations());
if (tokenRange != null) {
type.setRange(tokenRange.toRange().get());
}
@@ -130,14 +142,15 @@ public final class ArrayType extends ReferenceType implements NodeWithAnnotation
final List<ArrayBracketPair> arrayBracketPairs = new ArrayList<>(0);
while (type instanceof ArrayType) {
ArrayType arrayType = (ArrayType) type;
- arrayBracketPairs.add(new ArrayBracketPair(type.getTokenRange().orElse(null), arrayType.getAnnotations()));
+ arrayBracketPairs.add(new ArrayBracketPair(type.getTokenRange().orElse(null), arrayType.getOrigin(), arrayType.getAnnotations()));
type = arrayType.getComponentType();
}
return new Pair<>(type, arrayBracketPairs);
}
/**
- * Helper class that stores information about a pair of brackets.
+ * Helper class that stores information about a pair of brackets in a non-recursive way
+ * (unlike ArrayType.)
*/
public static class ArrayBracketPair {
@@ -145,9 +158,12 @@ public final class ArrayType extends ReferenceType implements NodeWithAnnotation
private NodeList<AnnotationExpr> annotations = new NodeList<>();
- public ArrayBracketPair(TokenRange tokenRange, NodeList<AnnotationExpr> annotations) {
+ private Origin origin;
+
+ public ArrayBracketPair(TokenRange tokenRange, Origin origin, NodeList<AnnotationExpr> annotations) {
setTokenRange(tokenRange);
setAnnotations(annotations);
+ setOrigin(origin);
}
public NodeList<AnnotationExpr> getAnnotations() {
@@ -167,6 +183,15 @@ public final class ArrayType extends ReferenceType implements NodeWithAnnotation
public Optional<TokenRange> getTokenRange() {
return Optional.ofNullable(tokenRange);
}
+
+ public Origin getOrigin() {
+ return origin;
+ }
+
+ public ArrayBracketPair setOrigin(Origin origin) {
+ this.origin = assertNotNull(origin);
+ return this;
+ }
}
@Override
@@ -174,6 +199,22 @@ public final class ArrayType extends ReferenceType implements NodeWithAnnotation
return (ArrayType) super.setAnnotations(annotations);
}
+ @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
+ public Origin getOrigin() {
+ return origin;
+ }
+
+ @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
+ public ArrayType setOrigin(final Origin origin) {
+ assertNotNull(origin);
+ if (origin == this.origin) {
+ return (ArrayType) this;
+ }
+ notifyPropertyChange(ObservableProperty.ORIGIN, this.origin, origin);
+ this.origin = origin;
+ return this;
+ }
+
@Override
@Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
public boolean remove(Node node) {