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);
});
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);
});
output.newline();
});
- else output.print("{}");
+ else print_bracketed_empty(self, output);
});
function print_property_name(key, quote, output) {
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 = [
[