aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2018-01-06 21:05:21 +0800
committerGitHub <noreply@github.com>2018-01-06 21:05:21 +0800
commit659c8a763265dfb6d567f5a41422f5f9095af4d8 (patch)
treecd87cc7990684496cd48ecaad577943aebe36211
parent3564b4f20dfd2ec06dd162ce5c22b1b3f2e03c7f (diff)
downloadtracifyjs-659c8a763265dfb6d567f5a41422f5f9095af4d8.tar.gz
tracifyjs-659c8a763265dfb6d567f5a41422f5f9095af4d8.zip
handle trailing line comments correctly (#2736)
fixes #2734
-rw-r--r--lib/output.js8
-rw-r--r--test/mocha/comment.js20
2 files changed, 26 insertions, 2 deletions
diff --git a/lib/output.js b/lib/output.js
index 58521e3c..83cd37b8 100644
--- a/lib/output.js
+++ b/lib/output.js
@@ -534,7 +534,11 @@ function OutputStream(options) {
var token = node.end;
if (!token) return;
var comments = token[tail ? "comments_before" : "comments_after"];
- if (comments && comments._dumped !== self) {
+ if (comments
+ && comments._dumped !== self
+ && (node instanceof AST_Statement || all(comments, function(c) {
+ return !/comment[134]/.test(c.type);
+ }))) {
comments._dumped = self;
var insert = OUTPUT.length;
comments.filter(comment_filter, node).forEach(function(c, i) {
@@ -599,7 +603,7 @@ function OutputStream(options) {
add_mapping : add_mapping,
option : function(opt) { return options[opt] },
prepend_comments: readonly ? noop : prepend_comments,
- append_comments : readonly ? noop : append_comments,
+ append_comments : readonly || comment_filter === return_false ? noop : append_comments,
line : function() { return current_line },
col : function() { return current_col },
pos : function() { return current_pos },
diff --git a/test/mocha/comment.js b/test/mocha/comment.js
index 3bad9e01..4db46b52 100644
--- a/test/mocha/comment.js
+++ b/test/mocha/comment.js
@@ -219,4 +219,24 @@ describe("Comment", function() {
if (result.error) throw result.error;
assert.strictEqual(result.code, "/*a*/ /*b*/(function(){/*c*/}/*d*/ /*e*/)();");
});
+
+ it("Should output line comments after statements", function() {
+ var result = uglify.minify([
+ "x()//foo",
+ "{y()//bar",
+ "}",
+ ].join("\n"), {
+ compress: false,
+ mangle: false,
+ output: {
+ comments: "all",
+ },
+ });
+ if (result.error) throw result.error;
+ assert.strictEqual(result.code, [
+ "x();//foo",
+ "{y();//bar",
+ "}",
+ ].join("\n"));
+ });
});