Repository: groovy Updated Branches: refs/heads/parrot 2f406901c -> 68c8c5f45
Check duplicated modifiers Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/68c8c5f4 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/68c8c5f4 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/68c8c5f4 Branch: refs/heads/parrot Commit: 68c8c5f45fd0ddf9594941232ab2d7a35c74e619 Parents: 2f40690 Author: sunlan <sun...@apache.org> Authored: Fri Jan 13 20:47:57 2017 +0800 Committer: sunlan <sun...@apache.org> Committed: Fri Jan 13 20:47:57 2017 +0800 ---------------------------------------------------------------------- .../apache/groovy/parser/antlr4/AstBuilder.java | 227 ++----------------- .../groovy/parser/antlr4/SyntaxErrorTest.groovy | 6 + .../src/test/resources/fail/Modifier_01x.groovy | 1 + .../src/test/resources/fail/Modifier_02x.groovy | 1 + .../src/test/resources/fail/Modifier_03x.groovy | 1 + 5 files changed, 32 insertions(+), 204 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/68c8c5f4/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java index 3f78bbf..9645000 100644 --- a/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java +++ b/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java @@ -140,209 +140,7 @@ import java.util.logging.Logger; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ABSTRACT; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ADD; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AS; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AdditiveExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AndExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AnnotationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AnnotationNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AnnotationsOptContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AnonymousInnerClassDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ArgumentsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ArrayInitializerContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AssertStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.AssignmentExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BlockContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BlockStatementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BlockStatementsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BlockStatementsOptContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BooleanLiteralAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BreakStatementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BreakStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.BuiltInTypeContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CASE; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CastExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CastParExpressionContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CatchClauseContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CatchTypeContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassBodyContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassBodyDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassOrInterfaceModifierContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassOrInterfaceModifiersContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassOrInterfaceModifiersOptContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClassOrInterfaceTypeContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClosureContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ClosurePrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CommandArgumentContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CommandExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CommandExpressionContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CompilationUnitContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ConditionalExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ContinueStatementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ContinueStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CreatedNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.CreatorContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.DEC; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.DEF; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.DEFAULT; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.DoWhileStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.DynamicMemberNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ElementValueArrayInitializerContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ElementValueContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ElementValuePairContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ElementValuePairsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.EnhancedArgumentListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.EnhancedArgumentListElementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.EnhancedForControlContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.EnumConstantContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.EnumConstantsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.EqualityExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ExclusiveOrExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ExpressionContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ExpressionListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ExpressionListElementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ExpressionStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.FINAL; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.FieldDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.FinallyBlockContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.FloatingPointLiteralAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ForControlContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ForInitContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ForStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ForUpdateContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.FormalParameterContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.FormalParameterListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.FormalParametersContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.GE; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.GT; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.GroovyParserRuleContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.GstringContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.GstringPathContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.GstringPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.GstringValueContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.IN; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.INC; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.INSTANCEOF; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.IdentifierContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.IdentifierPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.IfElseStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ImportDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ImportStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.InclusiveOrExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.IndexPropertyArgsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.IntegerLiteralAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.KeywordsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LE; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LT; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LabeledStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LambdaBodyContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LambdaPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LastFormalParameterContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ListPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LiteralPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LocalVariableDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LocalVariableDeclarationStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LogicalAndExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LogicalOrExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.LoopStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MapContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MapEntryContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MapEntryLabelContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MapEntryListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MapPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MemberDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MethodBodyContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MethodDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MethodDeclarationStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MethodNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ModifierContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ModifiersContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ModifiersOptContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MultipleAssignmentExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.MultiplicativeExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NATIVE; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NOT_IN; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NOT_INSTANCEOF; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NamePartContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NamedPropertyArgsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NewPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NlsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NonWildcardTypeArgumentsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NormalExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.NullLiteralAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PRIVATE; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PROTECTED; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PUBLIC; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PackageDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ParExpressionContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ParenPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PathElementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PathExpressionContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PostfixExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PowerExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.PrimitiveTypeContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.QualifiedClassNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.QualifiedClassNameListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.QualifiedNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.QualifiedStandardClassNameContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.RegexExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.RelationalExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ResourceContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ResourceListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ResourcesContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ReturnStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ReturnTypeContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.STATIC; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.STRICTFP; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SUB; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SYNCHRONIZED; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SepContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ShiftExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.StandardLambdaContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.StandardLambdaParametersContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.StringLiteralAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.StringLiteralContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SuperPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchBlockStatementGroupContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchLabelContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchStatementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.SynchronizedStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TRANSIENT; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ThisPrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.ThrowStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TryCatchStatementContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TryCatchStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeArgumentContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeArgumentsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeArgumentsOrDiamondContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeBoundContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeDeclarationStmtAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeListContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeNamePairContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeNamePairsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeParameterContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypeParametersContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.TypePrmrAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.UnaryAddExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.UnaryNotExprAltContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VOLATILE; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableDeclarationContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableDeclaratorContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableDeclaratorIdContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableDeclaratorsContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableInitializerContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableModifierContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableModifiersContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableModifiersOptContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.VariableNamesContext; -import static org.apache.groovy.parser.antlr4.GroovyLangParser.WhileStmtAltContext; +import static org.apache.groovy.parser.antlr4.GroovyLangParser.*; import static org.apache.groovy.parser.antlr4.GroovyParser.ElementValuesContext; import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean; import static org.codehaus.groovy.runtime.DefaultGroovyMethods.last; @@ -4363,13 +4161,28 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov * <p> * Created by Daniel.Sun on 2016/08/27. */ - private static class ModifierManager { + private class ModifierManager { private List<ModifierNode> modifierNodeList; public ModifierManager(List<ModifierNode> modifierNodeList) { + this.checkDuplicatedModifiers(modifierNodeList); this.modifierNodeList = Collections.unmodifiableList(asBoolean((Object) modifierNodeList) ? modifierNodeList : Collections.emptyList()); } + public void checkDuplicatedModifiers(List<ModifierNode> modifierNodeList) { + Map<ModifierNode, Integer> modifierNodeCounter = new HashMap<>(modifierNodeList.size()); + + for (ModifierNode modifierNode : modifierNodeList) { + Integer cnt = modifierNodeCounter.get(modifierNode); + + if (null == cnt) { + modifierNodeCounter.put(modifierNode, 1); + } else if (1 == cnt && !modifierNode.isRepeatable()) { + throw createParsingFailedException(modifierNode.getText() + " can not be duplicated", modifierNode); + } + } + } + // t 1: class modifiers value; 2: class member modifiers value private int calcModifiersOpValue(int t) { int result = 0; @@ -4471,6 +4284,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov private Integer opCode; // ASM opcode private String text; private AnnotationNode annotationNode; + private boolean repeatable; public static final int ANNOTATION_TYPE = -999; private static final Map<Integer, Integer> MAP = new HashMap<Integer, Integer>() { @@ -4497,6 +4311,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov public ModifierNode(Integer type) { this.type = type; this.opCode = MAP.get(type); + this.repeatable = ANNOTATION_TYPE == type; // Only annotations are repeatable if (!asBoolean((Object) this.opCode)) { throw new IllegalArgumentException("Unsupported modifier type: " + type); @@ -4558,6 +4373,10 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov return opCode; } + public boolean isRepeatable() { + return repeatable; + } + @Override public String getText() { return text; http://git-wip-us.apache.org/repos/asf/groovy/blob/68c8c5f4/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy b/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy index bc9a6e1..680f146 100644 --- a/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy +++ b/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy @@ -125,6 +125,12 @@ class SyntaxErrorTest extends GroovyTestCase { TestUtils.doRunAndShouldFail('fail/DoWhile_01x.groovy'); } + void "test groovy core - Modifier"() { + TestUtils.doRunAndShouldFail('fail/Modifier_01x.groovy'); + TestUtils.doRunAndShouldFail('fail/Modifier_02x.groovy'); + TestUtils.doRunAndShouldFail('fail/Modifier_03x.groovy'); + } + /**************************************/ static unzipScriptAndShouldFail(String entryName, List ignoreClazzList, Map<String, String> replacementsMap=[:], boolean toCheckNewParserOnly = false) { ignoreClazzList.addAll(COMMON_IGNORE_CLASS_LIST) http://git-wip-us.apache.org/repos/asf/groovy/blob/68c8c5f4/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_01x.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_01x.groovy b/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_01x.groovy new file mode 100644 index 0000000..3a42c5c --- /dev/null +++ b/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_01x.groovy @@ -0,0 +1 @@ +def def m() {} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/groovy/blob/68c8c5f4/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_02x.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_02x.groovy b/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_02x.groovy new file mode 100644 index 0000000..df8b840 --- /dev/null +++ b/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_02x.groovy @@ -0,0 +1 @@ +public public class A {} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/groovy/blob/68c8c5f4/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_03x.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_03x.groovy b/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_03x.groovy new file mode 100644 index 0000000..9f2c1b8 --- /dev/null +++ b/subprojects/groovy-parser-antlr4/src/test/resources/fail/Modifier_03x.groovy @@ -0,0 +1 @@ +final final int a = 1; \ No newline at end of file