From cda14e87cf338797a0c7ff7ea07083b47c7ea72f Mon Sep 17 00:00:00 2001 From: Dylan Piercey Date: Fri, 28 Dec 2018 10:59:55 -0700 Subject: [PATCH] Fix regression with w-body (#1213) --- src/taglibs/migrate/all-tags/w-body.js | 25 ++++++++++++++----- .../w-body-attr-val/snapshot-expected.marko | 4 +-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/taglibs/migrate/all-tags/w-body.js b/src/taglibs/migrate/all-tags/w-body.js index 9ed845e61..9259b21d4 100644 --- a/src/taglibs/migrate/all-tags/w-body.js +++ b/src/taglibs/migrate/all-tags/w-body.js @@ -18,11 +18,7 @@ module.exports = function migrate(el, context) { bodyValue, builder.identifier("renderBody") ); - const condition = builder.binaryExpression( - builder.unaryExpression(renderBodyValue, "typeof", true), - "===", - builder.literal("function") - ); + const condition = buildTypeOfFunction(renderBodyValue, context); dynamicTag.rawTagNameExpression = printJS(bodyValue, context); @@ -35,7 +31,15 @@ module.exports = function migrate(el, context) { printJS( isDefault ? condition - : builder.binaryExpression(bodyValue, "&&", condition), + : builder.binaryExpression( + bodyValue, + "&&", + builder.binaryExpression( + buildTypeOfFunction(bodyValue, context), + "||", + condition + ) + ), context ) ), @@ -44,3 +48,12 @@ module.exports = function migrate(el, context) { ]) ]); }; + +function buildTypeOfFunction(node, context) { + const builder = context.builder; + return builder.binaryExpression( + builder.unaryExpression(node, "typeof", true), + "===", + builder.literal("function") + ); +} diff --git a/test/migrate/fixtures/w-body-attr-val/snapshot-expected.marko b/test/migrate/fixtures/w-body-attr-val/snapshot-expected.marko index 3e6188f35..da2b1a0f3 100644 --- a/test/migrate/fixtures/w-body-attr-val/snapshot-expected.marko +++ b/test/migrate/fixtures/w-body-attr-val/snapshot-expected.marko @@ -1,13 +1,13 @@
- + <${input.title}/> ${input.title}
- + <${input.a ? input.b : input.c}/> ${input.a ? input.b : input.c}