Skip to content

Commit 1e2467a

Browse files
Groovy: fix parsing of Spock assertions/labels (#7523)
1 parent d4da5cc commit 1e2467a

2 files changed

Lines changed: 27 additions & 10 deletions

File tree

rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,16 +1196,18 @@ public void visitClassExpression(ClassExpression clazz) {
11961196

11971197
@Override
11981198
public void visitAssertStatement(AssertStatement statement) {
1199-
Space prefix = whitespace();
1200-
skip("assert");
1201-
Expression condition = doVisit(statement.getBooleanExpression());
1202-
JLeftPadded<Expression> message = null;
1203-
if (!(statement.getMessageExpression() instanceof ConstantExpression) || !((ConstantExpression) statement.getMessageExpression()).isNullExpression()) {
1204-
Space messagePrefix = whitespace();
1205-
skip(":");
1206-
message = padLeft(messagePrefix, doVisit(statement.getMessageExpression()));
1207-
}
1208-
queue.add(new J.Assert(randomId(), prefix, Markers.EMPTY, condition, message));
1199+
queue.add(labeled(statement, () -> {
1200+
Space prefix = whitespace();
1201+
skip("assert");
1202+
Expression condition = doVisit(statement.getBooleanExpression());
1203+
JLeftPadded<Expression> message = null;
1204+
if (!(statement.getMessageExpression() instanceof ConstantExpression) || !((ConstantExpression) statement.getMessageExpression()).isNullExpression()) {
1205+
Space messagePrefix = whitespace();
1206+
skip(":");
1207+
message = padLeft(messagePrefix, doVisit(statement.getMessageExpression()));
1208+
}
1209+
return new J.Assert(randomId(), prefix, Markers.EMPTY, condition, message);
1210+
}));
12091211
}
12101212

12111213
@Override

rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/LabelsTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,19 @@ def foo() {}
4949
)
5050
);
5151
}
52+
53+
@Test
54+
void labelBeforeAssert() {
55+
rewriteRun(
56+
//language=groovy
57+
groovy(
58+
"""
59+
def foo() {
60+
then:
61+
assert 1 == 0
62+
}
63+
"""
64+
)
65+
);
66+
}
5267
}

0 commit comments

Comments
 (0)