retain comments within brackets (#2999)

fixes #2998
This commit is contained in:
Alex Lam S.L
2018-03-13 18:44:21 +08:00
committed by GitHub
parent 5429234138
commit 188c39e8d5
2 changed files with 30 additions and 9 deletions

View File

@@ -886,18 +886,19 @@ function OutputStream(options) {
self.body.print(output);
output.semicolon();
});
function print_bracketed_empty(self, output) {
output.print("{");
output.with_indent(output.next_indent(), function() {
output.append_comments(self, true);
});
output.print("}");
}
function print_bracketed(self, output, allow_directives) {
if (self.body.length > 0) {
output.with_block(function() {
display_body(self.body, false, output, allow_directives);
});
} else {
output.print("{");
output.with_indent(output.next_indent(), function() {
output.append_comments(self, true);
});
output.print("}");
}
} else print_bracketed_empty(self, output);
};
DEFPRINT(AST_BlockStatement, function(self, output){
print_bracketed(self, output);
@@ -1092,7 +1093,7 @@ function OutputStream(options) {
});
output.space();
var last = self.body.length - 1;
if (last < 0) output.print("{}");
if (last < 0) print_bracketed_empty(self, output);
else output.with_block(function(){
self.body.forEach(function(branch, i){
output.indent(true);
@@ -1347,7 +1348,7 @@ function OutputStream(options) {
});
output.newline();
});
else output.print("{}");
else print_bracketed_empty(self, output);
});
function print_property_name(key, quote, output) {

View File

@@ -139,6 +139,26 @@ describe("Comment", function() {
assert.strictEqual(result.code, code);
});
it("Should retain comments within brackets", function() {
var code = [
"{/* foo */}",
"a({/* foo */});",
"while (a) {/* foo */}",
"switch (a) {/* foo */}",
"if (a) {/* foo */} else {/* bar */}",
].join("\n\n");
var result = uglify.minify(code, {
compress: false,
mangle: false,
output: {
beautify: true,
comments: "all",
},
});
if (result.error) throw result.error;
assert.strictEqual(result.code, code);
});
it("Should correctly preserve new lines around comments", function() {
var tests = [
[