From 0d9459dbb65f7a717d97ec8c723935ae9a83bcf1 Mon Sep 17 00:00:00 2001 From: Amjad Masad Date: Tue, 12 Jan 2016 17:28:46 -0800 Subject: [PATCH] Fix minified labeledStatement printing Unary expressions with alphabetic operators like 'void' were being squished next to the statement. --- packages/babel-generator/src/generators/statements.js | 7 +++++-- .../test/fixtures/minified/labeled-statement/actual.js | 1 + .../test/fixtures/minified/labeled-statement/expected.js | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js index cc373657c4..12d516ae04 100644 --- a/packages/babel-generator/src/generators/statements.js +++ b/packages/babel-generator/src/generators/statements.js @@ -1,6 +1,8 @@ import repeating from "repeating"; import * as t from "babel-types"; +const NON_ALPHABETIC_UNARY_OPERATORS = t.UPDATE_OPERATORS.concat(t.NUMBER_UNARY_OPERATORS).concat(['!']); + export function WithStatement(node: Object) { this.keyword("with"); this.push("("); @@ -107,8 +109,9 @@ function buildLabelStatement(prefix, key = "label") { let label = node[key]; if (label) { - if (!(this.format.minified && (t.isUnaryExpression(label, { prefix: true }) || - t.isUpdateExpression(label, { prefix: true })))) { + if (!(this.format.minified && ((t.isUnaryExpression(label, { prefix: true }) || + t.isUpdateExpression(label, { prefix: true })) && + NON_ALPHABETIC_UNARY_OPERATORS.indexOf(label.operator) > -1))) { this.push(" "); } diff --git a/packages/babel-generator/test/fixtures/minified/labeled-statement/actual.js b/packages/babel-generator/test/fixtures/minified/labeled-statement/actual.js index 26b572e8c8..1a1aceebfd 100644 --- a/packages/babel-generator/test/fixtures/minified/labeled-statement/actual.js +++ b/packages/babel-generator/test/fixtures/minified/labeled-statement/actual.js @@ -2,6 +2,7 @@ function x() { return -1; return --i; return !2; + return void 0; } throw -1; diff --git a/packages/babel-generator/test/fixtures/minified/labeled-statement/expected.js b/packages/babel-generator/test/fixtures/minified/labeled-statement/expected.js index 24fe1a26bf..c2fb44c31d 100644 --- a/packages/babel-generator/test/fixtures/minified/labeled-statement/expected.js +++ b/packages/babel-generator/test/fixtures/minified/labeled-statement/expected.js @@ -1 +1 @@ -function x(){return-1;return--i;return!2}throw-1; +function x(){return-1;return--i;return!2;return void 0}throw-1;