aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java8Validator.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java8Validator.java')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java8Validator.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java8Validator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java8Validator.java
new file mode 100644
index 000000000..e6aca92d0
--- /dev/null
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java8Validator.java
@@ -0,0 +1,32 @@
+package com.github.javaparser.ast.validator;
+
+import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
+import com.github.javaparser.ast.validator.chunks.ModifierValidator;
+
+/**
+ * This validator validates according to Java 7 syntax rules.
+ */
+public class Java8Validator extends Java7Validator {
+ protected final Validator modifiersWithoutPrivateInterfaceMethods = new ModifierValidator(true, true, false);
+ protected final Validator defaultMethodsInInterface = new SingleNodeTypeValidator<>(ClassOrInterfaceDeclaration.class,
+ (n, reporter) -> {
+ if (n.isInterface()) {
+ n.getMethods().forEach(m -> {
+ if (m.isDefault() && !m.getBody().isPresent()) {
+ reporter.report(m, "'default' methods must have a body.");
+ }
+ });
+ }
+ }
+ );
+
+ public Java8Validator() {
+ super();
+ replace(modifiersWithoutDefaultAndStaticInterfaceMethodsAndPrivateInterfaceMethods, modifiersWithoutPrivateInterfaceMethods);
+ add(defaultMethodsInInterface);
+ remove(noLambdas);
+
+ // TODO validate more annotation locations http://openjdk.java.net/jeps/104
+ // TODO validate repeating annotations http://openjdk.java.net/jeps/120
+ }
+}