Fixed expression statement reduction in closure attr and body text closures.

This commit is contained in:
JesseBrault0709 2024-06-01 10:16:24 +02:00
parent 2fabe1765a
commit 9c21fb9a83
2 changed files with 8 additions and 4 deletions

View File

@ -80,8 +80,9 @@ public class DefaultGroovyBodyNodeTranspiler implements GroovyBodyNodeTranspiler
if (cl.getParameters() == null) { if (cl.getParameters() == null) {
toLeftShift = cl; toLeftShift = cl;
} else { } else {
final Statement stmt = cl.getCode(); final BlockStatement blockStatement = (BlockStatement) cl.getCode();
if (stmt instanceof ExpressionStatement exprStmt) { final List<Statement> statements = blockStatement.getStatements();
if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement exprStmt) {
toLeftShift = exprStmt.getExpression(); toLeftShift = exprStmt.getExpression();
} else { } else {
toLeftShift = cl; toLeftShift = cl;

View File

@ -10,8 +10,11 @@ import org.codehaus.groovy.ast.expr.Expression;
import org.codehaus.groovy.ast.stmt.BlockStatement; import org.codehaus.groovy.ast.stmt.BlockStatement;
import org.codehaus.groovy.ast.stmt.EmptyStatement; import org.codehaus.groovy.ast.stmt.EmptyStatement;
import org.codehaus.groovy.ast.stmt.ExpressionStatement; import org.codehaus.groovy.ast.stmt.ExpressionStatement;
import org.codehaus.groovy.ast.stmt.Statement;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.List;
import static groowt.view.component.web.transpile.TranspilerUtil.getStringLiteral; import static groowt.view.component.web.transpile.TranspilerUtil.getStringLiteral;
public class DefaultValueNodeTranspiler implements ValueNodeTranspiler { public class DefaultValueNodeTranspiler implements ValueNodeTranspiler {
@ -35,8 +38,8 @@ public class DefaultValueNodeTranspiler implements ValueNodeTranspiler {
convertedClosure.visit(positionVisitor); convertedClosure.visit(positionVisitor);
final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode(); final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode();
if (!closureCode.isEmpty() final List<Statement> statements = closureCode.getStatements();
&& closureCode.getStatements().getFirst() instanceof ExpressionStatement expressionStatement) { if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement expressionStatement) {
return expressionStatement.getExpression(); return expressionStatement.getExpression();
} }
return convertedClosure; return convertedClosure;