Fixed bugs with how closure attr and dollar scriptlets are transpiled.

This commit is contained in:
JesseBrault0709 2024-06-01 17:34:41 +02:00
parent f514bc533f
commit d1d0a4c65a
3 changed files with 9 additions and 6 deletions

View File

@ -77,7 +77,7 @@ public class DefaultGroovyBodyNodeTranspiler implements GroovyBodyNodeTranspiler
protected Statement handleDollarScriptlet(DollarScriptletNode dollarScriptletNode, TranspilerState state) { protected Statement handleDollarScriptlet(DollarScriptletNode dollarScriptletNode, TranspilerState state) {
final ClosureExpression cl = this.convertToClosure(dollarScriptletNode, dollarScriptletNode.getGroovyCode()); final ClosureExpression cl = this.convertToClosure(dollarScriptletNode, dollarScriptletNode.getGroovyCode());
final Expression toLeftShift; final Expression toLeftShift;
if (cl.getParameters() == null) { if (cl.getParameters() == null || cl.getParameters().length > 0) {
toLeftShift = cl; toLeftShift = cl;
} else { } else {
final BlockStatement blockStatement = (BlockStatement) cl.getCode(); final BlockStatement blockStatement = (BlockStatement) cl.getCode();

View File

@ -37,10 +37,13 @@ public class DefaultValueNodeTranspiler implements ValueNodeTranspiler {
); );
convertedClosure.visit(positionVisitor); convertedClosure.visit(positionVisitor);
final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode(); final @Nullable Parameter[] closureParams = convertedClosure.getParameters();
final List<Statement> statements = closureCode.getStatements(); if (closureParams != null && closureParams.length == 0) {
if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement expressionStatement) { final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode();
return expressionStatement.getExpression(); final List<Statement> statements = closureCode.getStatements();
if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement expressionStatement) {
return expressionStatement.getExpression();
}
} }
return convertedClosure; return convertedClosure;
} }

View File

@ -27,7 +27,7 @@ class SimpleWebViewComponentTests extends AbstractWebViewComponentTests {
input.capitalize() input.capitalize()
} }
--- ---
<Echo subHelper={ -> helper('lowercase') }>${ -> subHelper.call() }</Echo> <Echo subHelper={-> helper('lowercase')}>${subHelper.call()}</Echo>
'''.stripIndent().trim(), 'Lowercase' '''.stripIndent().trim(), 'Lowercase'
) )
} }