diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2018-02-20 21:56:01 +0100 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2018-02-20 21:56:01 +0100 |
commit | 8d247c646efd3940285f408c5a5066be588a3334 (patch) | |
tree | fa969c96b010576b3e99b97224fab548049e7879 /javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java10Validator.java | |
parent | fbd8c73b0a66f3d71cd073c7b2cb61a1112f7ba6 (diff) | |
download | platform_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/java/com/github/javaparser/ast/validator/Java10Validator.java')
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java10Validator.java | 26 |
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() { |