Skip to content

Commit 54dc2da

Browse files
committed
Fix bug with formatting closure with labels
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
1 parent b0cd7d5 commit 54dc2da

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

modules/compiler/src/main/java/script/formatter/Formatter.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -187,17 +187,21 @@ public void visitExpressionStatement(ExpressionStatement node) {
187187
currentRootExpr = node.getExpression();
188188
appendLeadingComments(node);
189189
appendIndent();
190-
if( node.getStatementLabels() != null ) {
191-
for( var label : node.getStatementLabels() ) {
192-
append(label);
193-
append(": ");
194-
}
195-
}
190+
visitStatementLabels(node);
196191
visit(node.getExpression());
197192
appendNewLine();
198193
currentRootExpr = cre;
199194
}
200195

196+
private void visitStatementLabels(ExpressionStatement node) {
197+
if( node.getStatementLabels() == null )
198+
return;
199+
for( var label : DefaultGroovyMethods.asReversed(node.getStatementLabels()) ) {
200+
append(label);
201+
append(": ");
202+
}
203+
}
204+
201205
@Override
202206
public void visitReturnStatement(ReturnStatement node) {
203207
var cre = currentRootExpr;
@@ -280,11 +284,14 @@ public void visitMethodCallExpression(MethodCallExpression node) {
280284
inWrappedMethodChain = true;
281285

282286
if( !node.isImplicitThis() ) {
283-
visit(node.getObjectExpression());
287+
var receiver = node.getObjectExpression();
288+
visit(receiver);
284289
if( inWrappedMethodChain ) {
285-
appendNewLine();
286290
incIndent();
287-
appendIndent();
291+
if( !(receiver instanceof ClassExpression) ) {
292+
appendNewLine();
293+
appendIndent();
294+
}
288295
}
289296
if( node.isSpreadSafe() )
290297
append('*');
@@ -470,6 +477,7 @@ public void visitClosureExpression(ClosureExpression node) {
470477
}
471478
else if( code.getStatements().size() == 1 && code.getStatements().get(0) instanceof ExpressionStatement es && !shouldWrapExpression(node) ) {
472479
append(' ');
480+
visitStatementLabels(es);
473481
visit(es.getExpression());
474482
append(" }");
475483
}

0 commit comments

Comments
 (0)