aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/output.js19
-rw-r--r--test/mocha/comment.js20
2 files changed, 30 insertions, 9 deletions
diff --git a/lib/output.js b/lib/output.js
index 0569ab53..0aaec42b 100644
--- a/lib/output.js
+++ b/lib/output.js
@@ -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) {
diff --git a/test/mocha/comment.js b/test/mocha/comment.js
index 4db46b52..74ae962c 100644
--- a/test/mocha/comment.js
+++ b/test/mocha/comment.js
@@ -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 = [
[