GROOVY-8131: Statement continued onto next line is flagged when first character is "="
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/c9b4ee7b Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/c9b4ee7b Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/c9b4ee7b Branch: refs/heads/master Commit: c9b4ee7be39b7e68dcad56685f4186706dd10198 Parents: 9a0aa60 Author: sunlan <[email protected]> Authored: Sun Apr 2 02:07:37 2017 +0800 Committer: sunlan <[email protected]> Committed: Sun Apr 2 02:07:37 2017 +0800 ---------------------------------------------------------------------- .../apache/groovy/parser/antlr4/GroovyParser.g4 | 14 +++--- .../parser/antlr4/GroovyParserTest.groovy | 1 + .../test/resources/core/Expression_23x.groovy | 45 ++++++++++++++++++++ 3 files changed, 53 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/c9b4ee7b/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 b/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 index 71b7f0e..501938b 100644 --- a/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 +++ b/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 @@ -346,7 +346,7 @@ variableDeclarators ; variableDeclarator - : variableDeclaratorId (ASSIGN nls variableInitializer)? + : variableDeclaratorId (nls ASSIGN nls variableInitializer)? ; variableDeclaratorId @@ -416,11 +416,11 @@ formalParameterList ; formalParameter - : variableModifiersOpt type? variableDeclaratorId (ASSIGN nls expression)? + : variableModifiersOpt type? variableDeclaratorId (nls ASSIGN nls expression)? ; lastFormalParameter - : variableModifiersOpt type? ELLIPSIS variableDeclaratorId (ASSIGN nls expression)? + : variableModifiersOpt type? ELLIPSIS variableDeclaratorId (nls ASSIGN nls expression)? ; methodBody @@ -542,7 +542,7 @@ elementValuePairs ; elementValuePair - : elementValuePairName ASSIGN elementValue + : elementValuePairName nls ASSIGN nls elementValue ; elementValuePairName @@ -594,7 +594,7 @@ variableDeclaration[int t] ( { 0 == $t }? variableModifiers | { 1 == $t }? modifiers ) - typeNamePairs ASSIGN nls variableInitializer + typeNamePairs nls ASSIGN nls variableInitializer ; typeNamePairs @@ -883,8 +883,8 @@ expression // assignment expression (level 15) // "(a) = [1]" is a special case of multipleAssignmentExprAlt, it will be handle by assignmentExprAlt - | <assoc=right> left=variableNames op=ASSIGN nls right=statementExpression #multipleAssignmentExprAlt - | <assoc=right> left=expression + | <assoc=right> left=variableNames nls op=ASSIGN nls right=statementExpression #multipleAssignmentExprAlt + | <assoc=right> left=expression nls op=( ASSIGN | ADD_ASSIGN | SUB_ASSIGN http://git-wip-us.apache.org/repos/asf/groovy/blob/c9b4ee7b/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy b/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy index 65a9099..14b67f2 100644 --- a/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy +++ b/subprojects/groovy-parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy @@ -188,6 +188,7 @@ class GroovyParserTest extends GroovyTestCase { doRunAndTest('core/Expression_21x.groovy'); doTest('core/Expression_22x.groovy'); doRunAndTest('core/Expression_22x.groovy'); + doRunAndTest('core/Expression_23x.groovy'); } void "test groovy core - IdenticalOp"() { http://git-wip-us.apache.org/repos/asf/groovy/blob/c9b4ee7b/subprojects/groovy-parser-antlr4/src/test/resources/core/Expression_23x.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/test/resources/core/Expression_23x.groovy b/subprojects/groovy-parser-antlr4/src/test/resources/core/Expression_23x.groovy new file mode 100644 index 0000000..8962219 --- /dev/null +++ b/subprojects/groovy-parser-antlr4/src/test/resources/core/Expression_23x.groovy @@ -0,0 +1,45 @@ +def a + = + 1 + 2 +assert 3 == a + +a + += + 2 +assert 5 == a + +int b + = + 1, + c + = + 2 +assert 1 == b +assert 2 == c + +def (int x, int y) + = + [1, 2] +assert 1 == x +assert 2 == y +(x) + = + [3] +assert 3 == x + +@SuppressWarnings(value + = + "all") +def m(p1 + = + 1, + p2 + = + 2, + int... p3 + = + [3]) { + return p1 + p2 + p3[0] +} +assert 6 == m() +
