diff options
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.java | 52 |
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); + } +} |