From dd6e7723906f9823fbf1ca1b8aae9415c688fe53 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 3 Apr 2017 14:40:16 -0500 Subject: [PATCH 1/3] add option to wrap IIFE functions --- escodegen.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/escodegen.js b/escodegen.js index 42c05aed..e8ed2c96 100644 --- a/escodegen.js +++ b/escodegen.js @@ -62,6 +62,7 @@ sourceMap, sourceCode, preserveBlankLines, + wrapIIFE, FORMAT_MINIFY, FORMAT_DEFAULTS; @@ -190,7 +191,8 @@ parentheses: true, semicolons: true, safeConcatenation: false, - preserveBlankLines: false + preserveBlankLines: false, + wrapIIFE: false }, moz: { comprehensionExpressionStartsWithAssignment: false, @@ -1872,7 +1874,7 @@ }, CallExpression: function (expr, precedence, flags) { - var result, i, iz; + var result, i, iz, isIIFE; // F_ALLOW_UNPARATH_NEW becomes false. result = [this.generateExpression(expr.callee, Precedence.Call, E_TTF)]; result.push('('); @@ -1887,7 +1889,12 @@ if (!(flags & F_ALLOW_CALL)) { return ['(', result, ')']; } - return parenthesize(result, Precedence.Call, precedence); + + isIIFE = expr.callee.id === null && expr.callee.params.length === 0; + + return (isIIFE && wrapIIFE) ? + parenthesize(result, 0, 1) : + parenthesize(result, Precedence.Call, precedence); }, NewExpression: function (expr, precedence, flags) { @@ -2546,6 +2553,7 @@ sourceMap = options.sourceMap; sourceCode = options.sourceCode; preserveBlankLines = options.format.preserveBlankLines && sourceCode !== null; + wrapIIFE = options.format.wrapIIFE; extra = options; if (sourceMap) { From a30ea10d4ca923f5cce3aa852ca6b91e84a8cde4 Mon Sep 17 00:00:00 2001 From: "Jamison, Robert" Date: Mon, 3 Apr 2017 15:36:43 -0500 Subject: [PATCH 2/3] fix minor range bug in preserveBlankLines withing a Program block --- escodegen.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/escodegen.js b/escodegen.js index e8ed2c96..daafec10 100644 --- a/escodegen.js +++ b/escodegen.js @@ -1710,7 +1710,8 @@ // handle spaces between lines if (i > 0) { - if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { + if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments && + stmt.body[i - 1].range && stmt.body[i].range) { generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); } } From a7a744d0945341edd0db650e6869bece12eb09c1 Mon Sep 17 00:00:00 2001 From: "Jamison, Robert" Date: Mon, 3 Apr 2017 16:11:07 -0500 Subject: [PATCH 3/3] more preserveBlankLines fixes --- escodegen.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/escodegen.js b/escodegen.js index daafec10..ef71453c 100644 --- a/escodegen.js +++ b/escodegen.js @@ -741,6 +741,10 @@ prefix = sourceCode.substring(extRange[0], range[0]); count = (prefix.match(/\n/g) || []).length; + if (typeof result === 'string') { + result = [result]; + } + if (count > 0) { result.push(stringRepeat('\n', count)); result.push(addIndent(generateComment(comment))); @@ -1062,14 +1066,15 @@ result = ['{']; } } - if (!stmt.body[0].leadingComments) { + if (!stmt.body[0].leadingComments && stmt.body[0].range) { generateBlankLines(stmt.range[0], stmt.body[0].range[0], result); } } // handle spaces between lines if (i > 0) { - if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { + if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments && + stmt.body[i - 1].range && stmt.body[i].range) { generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); } } @@ -1101,7 +1106,7 @@ if (preserveBlankLines) { // handle spaces after the last line if (i === iz - 1) { - if (!stmt.body[i].trailingComments) { + if (!stmt.body[i].trailingComments && stmt.body[i].range) { generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); } } @@ -1703,7 +1708,7 @@ if (preserveBlankLines) { // handle spaces before the first line if (i === 0) { - if (!stmt.body[0].leadingComments) { + if (!stmt.body[0].leadingComments && stmt.body[i].range) { generateBlankLines(stmt.range[0], stmt.body[i].range[0], result); } } @@ -1732,7 +1737,7 @@ if (preserveBlankLines) { // handle spaces after the last line if (i === iz - 1) { - if (!stmt.body[i].trailingComments) { + if (!stmt.body[i].trailingComments && stmt.body[i].range) { generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); } }