aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/output.js7
-rw-r--r--test/compress/html_comments.js60
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 "<!--HTML-->comment in<!--string literal-->"; }
}
expect_exact: 'function f(){return"\\x3c!--HTML--\\x3ecomment in\\x3c!--string literal--\\x3e"}';
}
-
-