From d1d0a4c65a33ea67efc89c05a4e2de2c160c2b48 Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Sat, 1 Jun 2024 17:34:41 +0200 Subject: [PATCH] Fixed bugs with how closure attr and dollar scriptlets are transpiled. --- .../transpile/DefaultGroovyBodyNodeTranspiler.java | 2 +- .../web/transpile/DefaultValueNodeTranspiler.java | 11 +++++++---- .../component/web/SimpleWebViewComponentTests.groovy | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyBodyNodeTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyBodyNodeTranspiler.java index 50d6f89..3f88f99 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyBodyNodeTranspiler.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyBodyNodeTranspiler.java @@ -77,7 +77,7 @@ public class DefaultGroovyBodyNodeTranspiler implements GroovyBodyNodeTranspiler protected Statement handleDollarScriptlet(DollarScriptletNode dollarScriptletNode, TranspilerState state) { final ClosureExpression cl = this.convertToClosure(dollarScriptletNode, dollarScriptletNode.getGroovyCode()); final Expression toLeftShift; - if (cl.getParameters() == null) { + if (cl.getParameters() == null || cl.getParameters().length > 0) { toLeftShift = cl; } else { final BlockStatement blockStatement = (BlockStatement) cl.getCode(); diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java index 9743d55..b5bc4e5 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultValueNodeTranspiler.java @@ -37,10 +37,13 @@ public class DefaultValueNodeTranspiler implements ValueNodeTranspiler { ); convertedClosure.visit(positionVisitor); - final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode(); - final List statements = closureCode.getStatements(); - if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement expressionStatement) { - return expressionStatement.getExpression(); + final @Nullable Parameter[] closureParams = convertedClosure.getParameters(); + if (closureParams != null && closureParams.length == 0) { + final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode(); + final List statements = closureCode.getStatements(); + if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement expressionStatement) { + return expressionStatement.getExpression(); + } } return convertedClosure; } diff --git a/web-view-components/src/test/groovy/groowt/view/component/web/SimpleWebViewComponentTests.groovy b/web-view-components/src/test/groovy/groowt/view/component/web/SimpleWebViewComponentTests.groovy index aec6d2d..fae05d3 100644 --- a/web-view-components/src/test/groovy/groowt/view/component/web/SimpleWebViewComponentTests.groovy +++ b/web-view-components/src/test/groovy/groowt/view/component/web/SimpleWebViewComponentTests.groovy @@ -27,7 +27,7 @@ class SimpleWebViewComponentTests extends AbstractWebViewComponentTests { input.capitalize() } --- - helper('lowercase') }>${ -> subHelper.call() } + helper('lowercase')}>${subHelper.call()} '''.stripIndent().trim(), 'Lowercase' ) }