aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core/src/main
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2018-02-20 21:56:01 +0100
committerDanny van Bruggen <hexagonaal@gmail.com>2018-02-20 21:56:01 +0100
commit8d247c646efd3940285f408c5a5066be588a3334 (patch)
treefa969c96b010576b3e99b97224fab548049e7879 /javaparser-core/src/main
parentfbd8c73b0a66f3d71cd073c7b2cb61a1112f7ba6 (diff)
downloadplatform_external_javaparser-8d247c646efd3940285f408c5a5066be588a3334.tar.gz
platform_external_javaparser-8d247c646efd3940285f408c5a5066be588a3334.tar.bz2
platform_external_javaparser-8d247c646efd3940285f408c5a5066be588a3334.zip
Validate positions of var
Diffstat (limited to 'javaparser-core/src/main')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java10Validator.java26
1 files changed, 25 insertions, 1 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java10Validator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java10Validator.java
index b182e8db5..42e5c61c8 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java10Validator.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java10Validator.java
@@ -1,14 +1,38 @@
package com.github.javaparser.ast.validator;
+import com.github.javaparser.ast.Node;
+import com.github.javaparser.ast.body.VariableDeclarator;
+import com.github.javaparser.ast.expr.VariableDeclarationExpr;
+import com.github.javaparser.ast.stmt.ForStmt;
+import com.github.javaparser.ast.stmt.ForeachStmt;
import com.github.javaparser.ast.type.VarType;
+import java.util.Optional;
+
/**
* This validator validates according to Java 10 syntax rules.
*/
public class Java10Validator extends Java9Validator {
protected final Validator varOnlyOnLocalVariableDefinitionAndFor = new SingleNodeTypeValidator<>(VarType.class, (n, reporter) -> {
- // TODO issue 1407
+ Optional<VariableDeclarator> variableDeclarator = n.findParent(VariableDeclarator.class);
+ if (!variableDeclarator.isPresent()) {
+ reporter.report(n, "\"var\" is not allowed here.");
+ return;
+ }
+ variableDeclarator.ifPresent(vd -> {
+ Optional<Node> container = vd.getParentNode();
+ if (!container.isPresent()) {
+ reporter.report(n, "\"var\" is not allowed here.");
+ return;
+ }
+ container.ifPresent(c -> {
+ boolean positionIsFine = c instanceof ForStmt || c instanceof ForeachStmt || c instanceof VariableDeclarationExpr;
+ if (!positionIsFine) {
+ reporter.report(n, "\"var\" is not allowed here.");
+ }
+ });
+ });
});
public Java10Validator() {