diff --git a/src/ast/nodes/IfStatement.ts b/src/ast/nodes/IfStatement.ts index ad629bf667b..d1152429f32 100644 --- a/src/ast/nodes/IfStatement.ts +++ b/src/ast/nodes/IfStatement.ts @@ -82,6 +82,9 @@ export default class IfStatement extends StatementBase implements DeoptimizableE } if (this.alternate !== null) { if (this.alternate.included) { + if (code.original.charCodeAt(this.alternate.start - 1) === 101 /* e */) { + code.prependLeft(this.alternate.start, ' '); + } this.alternate.render(code, options); } else { code.remove(this.consequent.end, this.alternate.end); diff --git a/test/function/samples/if-statement-insert-whitespace/_config.js b/test/function/samples/if-statement-insert-whitespace/_config.js new file mode 100644 index 00000000000..bad60394fb9 --- /dev/null +++ b/test/function/samples/if-statement-insert-whitespace/_config.js @@ -0,0 +1,11 @@ +module.exports = { + description: 'inserts necessary white-space when simplifying if-statements (#3419)', + options: { + external: 'external' + }, + context: { + require(required) { + return false; + } + } +}; diff --git a/test/function/samples/if-statement-insert-whitespace/main.js b/test/function/samples/if-statement-insert-whitespace/main.js new file mode 100644 index 00000000000..c4c71f41329 --- /dev/null +++ b/test/function/samples/if-statement-insert-whitespace/main.js @@ -0,0 +1,8 @@ +let works = false; +const makeItWork = () => works = true; + +import value from 'external'; + +if (value) {} else"production"!=="local"?makeItWork():void 0; + +assert.ok(works);