From dff54a6552c4d6764c85ac3c11c545ad3909f997 Mon Sep 17 00:00:00 2001 From: kzc Date: Tue, 13 Oct 2015 01:17:10 -0400 Subject: [PATCH] Fix other operator output related to --- lib/output.js | 7 ++-- test/compress/html_comments.js | 60 ++++++++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/lib/output.js b/lib/output.js index 1bde822e..a3b8f1a7 100644 --- a/lib/output.js +++ b/lib/output.js @@ -1048,8 +1048,9 @@ function OutputStream(options) { output.print(self.operator); }); DEFPRINT(AST_Binary, function(self, output){ + var op = self.operator; self.left.print(output); - if (self.operator == ">" + if (op[0] == ">" /* ">>" ">>>" ">" ">=" */ && self.left instanceof AST_UnaryPostfix && self.left.operator == "--") { // space is mandatory to avoid outputting --> @@ -1058,8 +1059,8 @@ function OutputStream(options) { // the space is optional depending on "beautify" output.space(); } - output.print(self.operator); - if (self.operator == "<" + output.print(op); + if ((op == "<" || op == "<<") && self.right instanceof AST_UnaryPrefix && self.right.operator == "!" && self.right.expression instanceof AST_UnaryPrefix diff --git a/test/compress/html_comments.js b/test/compress/html_comments.js index 6141980d..8495b433 100644 --- a/test/compress/html_comments.js +++ b/test/compress/html_comments.js @@ -5,11 +5,67 @@ html_comment_in_expression: { expect_exact: "function f(a,b,x,y){return a< !--b&&x-- >y}"; } +html_comment_in_less_than: { + input: { + function f(a, b) { return a < !--b; } + } + expect_exact: "function f(a,b){return a< !--b}"; +} + +html_comment_in_left_shift: { + input: { + function f(a, b) { return a << !--b; } + } + expect_exact: "function f(a,b){return a<< !--b}"; +} + +html_comment_in_right_shift: { + input: { + function f(a, b) { return a-- >> b; } + } + expect_exact: "function f(a,b){return a-- >>b}"; +} + +html_comment_in_zero_fill_right_shift: { + input: { + function f(a, b) { return a-- >>> b; } + } + expect_exact: "function f(a,b){return a-- >>>b}"; +} + +html_comment_in_greater_than: { + input: { + function f(a, b) { return a-- > b; } + } + expect_exact: "function f(a,b){return a-- >b}"; +} + +html_comment_in_greater_than_or_equal: { + input: { + function f(a, b) { return a-- >= b; } + } + expect_exact: "function f(a,b){return a-- >=b}"; +} + +html_comment_in_right_shift_assign: { + input: { + // Note: illegal javascript + function f(a, b) { return a-- >>= b; } + } + expect_exact: "function f(a,b){return a-- >>=b}"; +} + +html_comment_in_zero_fill_right_shift_assign: { + input: { + // Note: illegal javascript + function f(a, b) { return a-- >>>= b; } + } + expect_exact: "function f(a,b){return a-- >>>=b}"; +} + html_comment_in_string_literal: { input: { function f() { return "comment in"; } } expect_exact: 'function f(){return"\\x3c!--HTML--\\x3ecomment in\\x3c!--string literal--\\x3e"}'; } - -