aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java5Validator.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java5Validator.java')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java5Validator.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java5Validator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java5Validator.java
new file mode 100644
index 000000000..d8b1aab1b
--- /dev/null
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java5Validator.java
@@ -0,0 +1,52 @@
+package com.github.javaparser.ast.validator;
+
+import com.github.javaparser.ast.Node;
+import com.github.javaparser.ast.NodeList;
+import com.github.javaparser.ast.nodeTypes.NodeWithTypeArguments;
+import com.github.javaparser.ast.type.PrimitiveType;
+import com.github.javaparser.ast.type.Type;
+
+import java.util.Optional;
+
+/**
+ * This validator validates according to Java 5 syntax rules.
+ */
+public class Java5Validator extends Java1_4Validator {
+ Validator genericsWithoutDiamondOperator = new TreeVisitorValidator((node, reporter) -> {
+ if (node instanceof NodeWithTypeArguments) {
+ Optional<NodeList<Type>> typeArguments = ((NodeWithTypeArguments<? extends Node>) node).getTypeArguments();
+ if (typeArguments.isPresent() && typeArguments.get().isEmpty()) {
+ reporter.report(node, "The diamond operator is not supported.");
+ }
+ }
+ });
+
+ protected Validator noPrimitiveGenericArguments = new TreeVisitorValidator((node, reporter) -> {
+ if (node instanceof NodeWithTypeArguments) {
+ Optional<NodeList<Type>> typeArguments = ((NodeWithTypeArguments<? extends Node>) node).getTypeArguments();
+ typeArguments.ifPresent(types -> types.forEach(ty -> {
+ if (ty instanceof PrimitiveType) {
+ reporter.report(node, "Type arguments may not be primitive.");
+ }
+ }));
+ }
+ });
+
+ protected final Validator enumNotAllowed = new ReservedKeywordValidator("enum");
+
+ public Java5Validator() {
+ super();
+ replace(noGenerics, genericsWithoutDiamondOperator);
+ add(noPrimitiveGenericArguments);
+ add(enumNotAllowed);
+
+ // TODO validate annotations on classes, fields and methods but nowhere else
+ // The following is probably too simple.
+ remove(noAnnotations);
+
+ remove(noEnums);
+ remove(noVarargs);
+ remove(noForEach);
+ remove(noStaticImports);
+ }
+}