Fixed bugs with how closure attr and dollar scriptlets are transpiled.
This commit is contained in:
parent
f514bc533f
commit
d1d0a4c65a
@ -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();
|
||||||
|
@ -37,11 +37,14 @@ public class DefaultValueNodeTranspiler implements ValueNodeTranspiler {
|
|||||||
);
|
);
|
||||||
convertedClosure.visit(positionVisitor);
|
convertedClosure.visit(positionVisitor);
|
||||||
|
|
||||||
|
final @Nullable Parameter[] closureParams = convertedClosure.getParameters();
|
||||||
|
if (closureParams != null && closureParams.length == 0) {
|
||||||
final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode();
|
final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode();
|
||||||
final List<Statement> statements = closureCode.getStatements();
|
final List<Statement> statements = closureCode.getStatements();
|
||||||
if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement expressionStatement) {
|
if (statements.size() == 1 && statements.getFirst() instanceof ExpressionStatement expressionStatement) {
|
||||||
return expressionStatement.getExpression();
|
return expressionStatement.getExpression();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return convertedClosure;
|
return convertedClosure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user