From 26be28d52b44f1d70afee148c08360c6048ef9d6 Mon Sep 17 00:00:00 2001 From: micschro Date: Tue, 10 Apr 2018 11:49:03 +0200 Subject: [PATCH] Fix #365 Fix broken parens on return statements with leading comments --- escodegen.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/escodegen.js b/escodegen.js index efcca692..7a17d350 100644 --- a/escodegen.js +++ b/escodegen.js @@ -1738,10 +1738,19 @@ ReturnStatement: function (stmt, flags) { if (stmt.argument) { - return [join( - 'return', - this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) - ), this.semicolon(flags)]; + var shouldParenthesize = stmt.argument.leadingComments && stmt.argument.leadingComments.length > 0; + var result = []; + if (shouldParenthesize) { + var that = this; + result.push('(', newline) + withIndent(function () { + result.push(addIndent(that.generateExpression(stmt.argument, Precedence.Sequence, E_TTT)), newline) + }); + result.push(addIndent(')')) + } else { + result.push(this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT)); + } + return [join('return', result), this.semicolon(flags)]; } return ['return' + this.semicolon(flags)]; },