aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/output.js2
-rw-r--r--test/mocha/comments.js119
2 files changed, 76 insertions, 45 deletions
diff --git a/lib/output.js b/lib/output.js
index 827fa43a..b9d8a137 100644
--- a/lib/output.js
+++ b/lib/output.js
@@ -452,7 +452,7 @@ function OutputStream(options) {
var self = this;
var scan = node instanceof AST_Exit && node.value;
var comments = dump(node);
- if (!comments) return;
+ if (!comments) comments = [];
if (scan) {
var tw = new TreeWalker(function(node) {
diff --git a/test/mocha/comments.js b/test/mocha/comments.js
index 04dd171e..764f6db8 100644
--- a/test/mocha/comments.js
+++ b/test/mocha/comments.js
@@ -48,53 +48,84 @@ describe("comments", function() {
}
});
- it("Should handle comment within return correctly", function() {
- var result = UglifyJS.minify([
- "function unequal(x, y) {",
- " return (",
- " // Either one",
- " x < y",
- " ||",
- " y < x",
- " );",
- "}",
- ].join("\n"), {
- compress: false,
- mangle: false,
- output: {
- beautify: true,
- comments: "all",
- },
+ describe("comment within return", function() {
+ it("Should handle leading return", function() {
+ var result = UglifyJS.minify([
+ "function unequal(x, y) {",
+ " return (",
+ " // Either one",
+ " x < y",
+ " ||",
+ " y < x",
+ " );",
+ "}",
+ ].join("\n"), {
+ compress: false,
+ mangle: false,
+ output: {
+ beautify: true,
+ comments: "all",
+ },
+ });
+ if (result.error) throw result.error;
+ assert.strictEqual(result.code, [
+ "function unequal(x, y) {",
+ " // Either one",
+ " return x < y || y < x;",
+ "}",
+ ].join("\n"));
});
- if (result.error) throw result.error;
- assert.strictEqual(result.code, [
- "function unequal(x, y) {",
- " // Either one",
- " return x < y || y < x;",
- "}",
- ].join("\n"));
- });
- it("Should handle comment folded into return correctly", function() {
- var result = UglifyJS.minify([
- "function f() {",
- " /* boo */ x();",
- " return y();",
- "}",
- ].join("\n"), {
- mangle: false,
- output: {
- beautify: true,
- comments: "all",
- },
+ it("Should handle trailing return", function() {
+ var result = UglifyJS.minify([
+ "function unequal(x) {",
+ " var y;",
+ " return (",
+ " // Either one",
+ " x < y",
+ " ||",
+ " y < x",
+ " );",
+ "}",
+ ].join("\n"), {
+ compress: false,
+ mangle: false,
+ output: {
+ beautify: true,
+ comments: "all",
+ },
+ });
+ if (result.error) throw result.error;
+ assert.strictEqual(result.code, [
+ "function unequal(x) {",
+ " var y;",
+ " // Either one",
+ " return x < y || y < x;",
+ "}",
+ ].join("\n"));
+ });
+
+ it("Should handle comment folded into return", function() {
+ var result = UglifyJS.minify([
+ "function f() {",
+ " /* boo */ x();",
+ " return y();",
+ "}",
+ ].join("\n"), {
+ mangle: false,
+ output: {
+ beautify: true,
+ comments: "all",
+ },
+ });
+ if (result.error) throw result.error;
+ assert.strictEqual(result.code, [
+ "function f() {",
+ " /* boo */",
+ " return x(), y();",
+ "}",
+ ].join("\n"));
});
- if (result.error) throw result.error;
- assert.strictEqual(result.code, [
- "function f() {",
- " /* boo */",
- " return x(), y();",
- "}",
- ].join("\n"));
});
it("Should not drop comments after first OutputStream", function() {