diff --git a/src/ast/nodes/LogicalExpression.ts b/src/ast/nodes/LogicalExpression.ts index d6c37ddc08b..50125fe9052 100644 --- a/src/ast/nodes/LogicalExpression.ts +++ b/src/ast/nodes/LogicalExpression.ts @@ -184,7 +184,8 @@ export default class LogicalExpression extends NodeBase implements Deoptimizable renderedParentType: renderedParentType || this.parent.type }); } else { - super.render(code, options); + this.left.render(code, options, { preventASI }); + this.right.render(code, options); } } diff --git a/test/function/samples/prevent-tree-shaking-asi/main.js b/test/function/samples/prevent-tree-shaking-asi/main.js index 51deb9f78b9..86c8abe3c00 100644 --- a/test/function/samples/prevent-tree-shaking-asi/main.js +++ b/test/function/samples/prevent-tree-shaking-asi/main.js @@ -28,13 +28,19 @@ function test3() { } assert.strictEqual(test3(), 'expected'); -function test4() { +function test4(value) { + return true && + value || false; +} +assert.strictEqual(test4('expected'), 'expected'); + +function test5() { return 'removed', /* kept */ 'expected'; } -assert.strictEqual(test4(), 'expected'); +assert.strictEqual(test5(), 'expected'); try { throw true ? @@ -45,8 +51,8 @@ try { assert.strictEqual(err.message, 'expected'); } -function* test5() { +function* test6() { yield false || 'expected' } -assert.strictEqual(test5().next().value, 'expected'); +assert.strictEqual(test6().next().value, 'expected');