Component closure value attr now reduce to simple expressions if possible.
This commit is contained in:
parent
44fdd712cf
commit
9534d7b26e
@ -8,7 +8,6 @@ import org.codehaus.groovy.ast.expr.*;
|
|||||||
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 static groowt.view.component.web.transpile.TranspilerUtil.getStringLiteral;
|
import static groowt.view.component.web.transpile.TranspilerUtil.getStringLiteral;
|
||||||
@ -33,8 +32,9 @@ public class DefaultValueNodeTranspiler implements ValueNodeTranspiler {
|
|||||||
);
|
);
|
||||||
convertedClosure.visit(positionVisitor);
|
convertedClosure.visit(positionVisitor);
|
||||||
|
|
||||||
final Statement closureCode = convertedClosure.getCode();
|
final BlockStatement closureCode = (BlockStatement) convertedClosure.getCode();
|
||||||
if (closureCode instanceof ExpressionStatement expressionStatement) {
|
if (!closureCode.isEmpty()
|
||||||
|
&& closureCode.getStatements().getFirst() instanceof ExpressionStatement expressionStatement) {
|
||||||
final Expression expression = expressionStatement.getExpression();
|
final Expression expression = expressionStatement.getExpression();
|
||||||
return switch (expression) {
|
return switch (expression) {
|
||||||
case ConstantExpression ignored -> expression;
|
case ConstantExpression ignored -> expression;
|
||||||
|
@ -45,4 +45,15 @@ class BaseWebViewComponentTests extends AbstractWebViewComponentTests {
|
|||||||
this.doTest('<BaseWebViewComponentTests.UsingGreeter />', 'Hello, World!', context)
|
this.doTest('<BaseWebViewComponentTests.UsingGreeter />', 'Hello, World!', context)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void closureValueAttrReducedToExpr() {
|
||||||
|
def context = this.context {
|
||||||
|
configureRootScope(WebViewComponentScope) {
|
||||||
|
addWithAttr(Greeter)
|
||||||
|
addWithNoArgConstructor(UsingGreeter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.doTest('<BaseWebViewComponentTests.Greeter target={"World"} />', 'Hello, World!', context)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user