diff --git a/lib/parse.js b/lib/parse.js index a573234c..b6298814 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -261,7 +261,7 @@ function tokenizer($TEXT, filename, html5_comments, shebang) { var text = S.text; for (var i = S.pos, n = S.text.length; i < n; ++i) { var ch = text[i]; - if (ch == '\n' || ch == '\r') + if ("\n\r\u2028\u2029".indexOf(ch) >= 0) return i; } return -1; diff --git a/test/mocha/comment.js b/test/mocha/comment.js new file mode 100644 index 00000000..9a1a8ec8 --- /dev/null +++ b/test/mocha/comment.js @@ -0,0 +1,27 @@ +var assert = require("assert"); +var uglify = require("../../"); + +describe("Comment", function() { + it("Should recognize eol of single line comments", function() { + var tests = [ + "//Some comment\n>", + "//Some comment\r>", + "//Some comment\r\n>", + "//Some comment\u2028>", + "//Some comment\u2029>" + ]; + + var fail = function(e) { + return e instanceof uglify.JS_Parse_Error && + e.message === "SyntaxError: Unexpected token: operator (>)" && + e.line === 2 && + e.col === 0; + } + + for (var i = 0; i < tests.length; i++) { + assert.throws(function() { + uglify.parse(tests[i], {fromString: true}) + }, fail, tests[i]); + } + }); +});