diff options
author | Danny van Bruggen <lol@meuk.info> | 2018-02-07 19:23:51 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-07 19:23:51 +0100 |
commit | 3aaebd2ab93a6e484890657726ab6e3939a21809 (patch) | |
tree | 60a6c654363f09ca498c59e5d8acdf42cabdc83f /javaparser-core/src/main | |
parent | 8a84534731712fff8d6cdd1d50f93945591b782c (diff) | |
parent | 4b64706539d4b8eb310e6f33ed752267d27a566f (diff) | |
download | platform_external_javaparser-3aaebd2ab93a6e484890657726ab6e3939a21809.tar.gz platform_external_javaparser-3aaebd2ab93a6e484890657726ab6e3939a21809.tar.bz2 platform_external_javaparser-3aaebd2ab93a6e484890657726ab6e3939a21809.zip |
Merge branch 'master' into cleanup_jss
Diffstat (limited to 'javaparser-core/src/main')
7 files changed, 103 insertions, 19 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ParserConfiguration.java b/javaparser-core/src/main/java/com/github/javaparser/ParserConfiguration.java index 42a6fe067..deb8d4cdc 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ParserConfiguration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ParserConfiguration.java @@ -27,6 +27,7 @@ import com.github.javaparser.ast.validator.*; import com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter; import com.github.javaparser.resolution.SymbolResolver; import com.github.javaparser.version.Java10PostProcessor; +import com.github.javaparser.version.Java11PostProcessor; import java.util.ArrayList; import java.util.List; @@ -41,7 +42,7 @@ import static com.github.javaparser.utils.Utils.assertNotNull; */ public class ParserConfiguration { public enum LanguageLevel { - ANY(null, null), + RAW(null, null), JAVA_1_0(new Java1_0Validator(), null), JAVA_1_1(new Java1_1Validator(), null), JAVA_1_2(new Java1_2Validator(), null), @@ -52,7 +53,8 @@ public class ParserConfiguration { JAVA_7(new Java7Validator(), null), JAVA_8(new Java8Validator(), null), JAVA_9(new Java9Validator(), null), - JAVA_10_PREVIEW(null, new Java10PostProcessor()); + JAVA_10_PREVIEW(null, new Java10PostProcessor()), + JAVA_11_PREVIEW(null, new Java11PostProcessor()); final Validator validator; final ParseResult.PostProcessor postProcessor; @@ -201,7 +203,7 @@ public class ParserConfiguration { } else if (validator instanceof Java1_0Validator) { setLanguageLevel(LanguageLevel.JAVA_1_0); } else if (validator instanceof NoProblemsValidator) { - setLanguageLevel(LanguageLevel.ANY); + setLanguageLevel(LanguageLevel.RAW); } return this; } 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 c551013a8..b182e8db5 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 @@ -8,7 +8,7 @@ import com.github.javaparser.ast.type.VarType; public class Java10Validator extends Java9Validator { protected final Validator varOnlyOnLocalVariableDefinitionAndFor = new SingleNodeTypeValidator<>(VarType.class, (n, reporter) -> { - + // TODO issue 1407 }); public Java10Validator() { diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java11Validator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java11Validator.java new file mode 100644 index 000000000..d80577268 --- /dev/null +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/Java11Validator.java @@ -0,0 +1,10 @@ +package com.github.javaparser.ast.validator; + +/** + * This validator validates according to Java 11 syntax rules. + */ +public class Java11Validator extends Java10Validator { + public Java11Validator() { + super(); + } +} diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/NoProblemsValidator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/NoProblemsValidator.java index 15edbf7f3..002668892 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/NoProblemsValidator.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/NoProblemsValidator.java @@ -6,7 +6,7 @@ import com.github.javaparser.ast.Node; /** * Stub validator for when no validation is wanted. * - * @deprecated when setting a language validator, try {@link com.github.javaparser.ParserConfiguration#setLanguageLevel(ParserConfiguration.LanguageLevel)} with ANY. + * @deprecated when setting a language validator, try {@link com.github.javaparser.ParserConfiguration#setLanguageLevel(ParserConfiguration.LanguageLevel)} with RAW. */ @Deprecated public final class NoProblemsValidator implements Validator { diff --git a/javaparser-core/src/main/java/com/github/javaparser/version/Java10PostProcessor.java b/javaparser-core/src/main/java/com/github/javaparser/version/Java10PostProcessor.java index 569f461ad..01251712e 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/version/Java10PostProcessor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/version/Java10PostProcessor.java @@ -7,24 +7,29 @@ import com.github.javaparser.ast.type.ClassOrInterfaceType; import com.github.javaparser.ast.type.VarType; import com.github.javaparser.ast.validator.Java10Validator; import com.github.javaparser.ast.validator.ProblemReporter; -import com.github.javaparser.ast.visitor.ModifierVisitor; -import com.github.javaparser.ast.visitor.Visitable; + +import static com.github.javaparser.ParseResult.*; /** * Processes the generic AST into a Java 10 AST and validates it. */ -public class Java10PostProcessor implements ParseResult.PostProcessor { - private final Java10Validator validator = new Java10Validator(); - - @Override - public void process(ParseResult<? extends Node> result, ParserConfiguration configuration) { - result.getResult().ifPresent(node -> { - node.findAll(ClassOrInterfaceType.class).forEach(n -> { - if (n.getNameAsString().equals("var")) { - n.replace(new VarType(n.getTokenRange().orElse(null))); - } +public class Java10PostProcessor extends PostProcessors { + protected final PostProcessor java10Validator = new Java10Validator().postProcessor(); + protected final PostProcessor varNodeCreator = new PostProcessor() { + @Override + public void process(ParseResult<? extends Node> result, ParserConfiguration configuration) { + result.getResult().ifPresent(node -> { + node.findAll(ClassOrInterfaceType.class).forEach(n -> { + if (n.getNameAsString().equals("var")) { + n.replace(new VarType(n.getTokenRange().orElse(null))); + } + }); }); - validator.accept(node, new ProblemReporter(problem -> result.getProblems().add(problem))); - }); + } + }; + + public Java10PostProcessor() { + add(varNodeCreator); + add(java10Validator); } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/version/Java11PostProcessor.java b/javaparser-core/src/main/java/com/github/javaparser/version/Java11PostProcessor.java new file mode 100644 index 000000000..5d36efc05 --- /dev/null +++ b/javaparser-core/src/main/java/com/github/javaparser/version/Java11PostProcessor.java @@ -0,0 +1,18 @@ +package com.github.javaparser.version; + +import com.github.javaparser.ParseResult; +import com.github.javaparser.ParserConfiguration; +import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.validator.Java11Validator; +import com.github.javaparser.ast.validator.ProblemReporter; + +/** + * Processes the generic AST into a Java 10 AST and validates it. + */ +public class Java11PostProcessor extends Java10PostProcessor { + protected final ParseResult.PostProcessor java11Validator = new Java11Validator().postProcessor(); + + public Java11PostProcessor() { + replace(java10Validator, java11Validator); + } +} diff --git a/javaparser-core/src/main/java/com/github/javaparser/version/PostProcessors.java b/javaparser-core/src/main/java/com/github/javaparser/version/PostProcessors.java new file mode 100644 index 000000000..4220de341 --- /dev/null +++ b/javaparser-core/src/main/java/com/github/javaparser/version/PostProcessors.java @@ -0,0 +1,49 @@ +package com.github.javaparser.version; + +import com.github.javaparser.ParseResult; +import com.github.javaparser.ParserConfiguration; +import com.github.javaparser.ast.Node; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static com.github.javaparser.ParseResult.PostProcessor; + +/** + * A post processor that will call a collection of post processors. + */ +public class PostProcessors implements PostProcessor { + private final List<PostProcessor> postProcessors = new ArrayList<>(); + + public PostProcessors(PostProcessor... postProcessors) { + this.postProcessors.addAll(Arrays.asList(postProcessors)); + } + + public List<PostProcessor> getPostProcessors() { + return postProcessors; + } + + public PostProcessors remove(PostProcessor postProcessor) { + if (!postProcessors.remove(postProcessor)) { + throw new AssertionError("Trying to remove a post processor that isn't there."); + } + return this; + } + + public PostProcessors replace(PostProcessor oldProcessor, PostProcessor newProcessor) { + remove(oldProcessor); + add(newProcessor); + return this; + } + + public PostProcessors add(PostProcessor newProcessor) { + postProcessors.add(newProcessor); + return this; + } + + @Override + public void process(ParseResult<? extends Node> result, ParserConfiguration configuration) { + postProcessors.forEach(pp -> pp.process(result, configuration)); + } +} |