diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2018-01-06 21:05:21 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-06 21:05:21 +0800 |
commit | 659c8a763265dfb6d567f5a41422f5f9095af4d8 (patch) | |
tree | cd87cc7990684496cd48ecaad577943aebe36211 | |
parent | 3564b4f20dfd2ec06dd162ce5c22b1b3f2e03c7f (diff) | |
download | tracifyjs-659c8a763265dfb6d567f5a41422f5f9095af4d8.tar.gz tracifyjs-659c8a763265dfb6d567f5a41422f5f9095af4d8.zip |
handle trailing line comments correctly (#2736)
fixes #2734
-rw-r--r-- | lib/output.js | 8 | ||||
-rw-r--r-- | test/mocha/comment.js | 20 |
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")); + }); }); |