aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihai Bazon <mihai.bazon@gmail.com>2015-10-13 09:59:40 +0300
committerMihai Bazon <mihai.bazon@gmail.com>2015-10-13 09:59:40 +0300
commitce100728246fbfece9741171febd4f454d404143 (patch)
treebf1977edd71d9ea2f570d154b44b4a2ea8ca65ac
parent1940fb682c7f29d3d82913d0b58d542d034c2556 (diff)
parentdff54a6552c4d6764c85ac3c11c545ad3909f997 (diff)
downloadtracifyjs-ce100728246fbfece9741171febd4f454d404143.tar.gz
tracifyjs-ce100728246fbfece9741171febd4f454d404143.zip
Merge pull request #829 from kzc/html_comment_ops
Fix other operator output producing <!-- or -->
-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"}';
}
-
-