}
}
newline_insert = -1;
- var prev = last.charAt(last.length - 1);
+ var prev = last.slice(-1);
if (might_need_semicolon) {
might_need_semicolon = false;
}
if (might_need_space) {
- if ((is_identifier_char(prev)
- && (is_identifier_char(ch) || ch == "\\"))
+ if (is_identifier_char(prev) && (is_identifier_char(ch) || ch == "\\")
|| (ch == "/" && ch == prev)
- || ((ch == "+" || ch == "-") && ch == last))
- {
+ || ((ch == "+" || ch == "-") && ch == last)
+ || str == "--" && last == "!"
+ || last == "--" && ch == ">") {
OUTPUT += " ";
current_col++;
current_pos++;
}
- might_need_space = false;
+ if (prev != "<" || str != "!") might_need_space = false;
}
if (mapping_token) {
}
OUTPUT += str;
- has_parens = str[str.length - 1] == "(";
+ has_parens = str.slice(-1) == "(";
current_pos += str.length;
var a = str.split(/\r?\n/), n = a.length - 1;
current_line += n;
output.print(self.operator);
});
DEFPRINT(AST_Binary, function(self, output) {
- var op = self.operator;
self.left.print(output);
- if (op[0] == ">" /* ">>" ">>>" ">" ">=" */
- && self.left instanceof AST_UnaryPostfix
- && self.left.operator == "--") {
- // space is mandatory to avoid outputting -->
- output.print(" ");
- } else {
- // the space is optional depending on "beautify"
- output.space();
- }
- output.print(op);
- if ((op == "<" || op == "<<")
- && self.right instanceof AST_UnaryPrefix
- && self.right.operator == "!"
- && self.right.expression instanceof AST_UnaryPrefix
- && self.right.expression.operator == "--") {
- // space is mandatory to avoid outputting <!--
- output.print(" ");
- } else {
- // the space is optional depending on "beautify"
- output.space();
- }
+ output.space();
+ output.print(self.operator);
+ output.space();
self.right.print(output);
});
DEFPRINT(AST_Conditional, function(self, output) {
html_comment_in_expression: {
input: {
- function f(a, b, x, y) { return a < !--b && x-- > y; }
+ (function(a, b) {
+ console.log(a < !--b && a-- > b, a, b);
+ })(1, 2);
}
- expect_exact: "function f(a,b,x,y){return a< !--b&&x-- >y}";
+ expect_exact: "(function(a,b){console.log(a<! --b&&a-- >b,a,b)})(1,2);"
+ expect_stdout: "false 1 1"
}
html_comment_in_less_than: {
input: {
- function f(a, b) { return a < !--b; }
+ (function(a, b, c) {
+ console.log(
+ a < !--b,
+ a < !--b + c,
+ a + b < !--c,
+ a, b, c
+ );
+ })(1, 2, 3);
}
- expect_exact: "function f(a,b){return a< !--b}";
+ expect_exact: "(function(a,b,c){console.log(a<! --b,a<! --b+c,a+b<! --c,a,b,c)})(1,2,3);"
+ expect_stdout: "false true false 1 0 2"
}
html_comment_in_left_shift: {
input: {
- function f(a, b) { return a << !--b; }
+ (function(a, b, c) {
+ console.log(
+ a << !--b,
+ a << !--b + c,
+ a + b << !--c,
+ a, b, c
+ );
+ })(1, 2, 3);
}
- expect_exact: "function f(a,b){return a<< !--b}";
+ expect_exact: "(function(a,b,c){console.log(a<<! --b,a<<! --b+c,a+b<<! --c,a,b,c)})(1,2,3);"
+ expect_stdout: "1 16 1 1 0 2"
}
-html_comment_in_right_shift: {
+html_comment_in_greater_than: {
input: {
- function f(a, b) { return a-- >> b; }
+ (function(a, b, c) {
+ console.log(
+ a-- > b,
+ a-- > b + c,
+ a + b-- > c,
+ a, b, c
+ );
+ })(1, 2, 3);
}
- expect_exact: "function f(a,b){return a-- >>b}";
+ expect_exact: "(function(a,b,c){console.log(a-- >b,a-- >b+c,a+b-- >c,a,b,c)})(1,2,3);"
+ expect_stdout: "false false false -1 1 3"
}
-html_comment_in_zero_fill_right_shift: {
+html_comment_in_greater_than_or_equal: {
input: {
- function f(a, b) { return a-- >>> b; }
+ (function(a, b, c) {
+ console.log(
+ a-- >= b,
+ a-- >= b + c,
+ a + b-- >= c,
+ a, b, c
+ );
+ })(1, 2, 3);
}
- expect_exact: "function f(a,b){return a-- >>>b}";
+ expect_exact: "(function(a,b,c){console.log(a-- >=b,a-- >=b+c,a+b-- >=c,a,b,c)})(1,2,3);"
+ expect_stdout: "false false false -1 1 3"
}
-html_comment_in_greater_than: {
+html_comment_in_right_shift: {
input: {
- function f(a, b) { return a-- > b; }
+ (function(a, b, c) {
+ console.log(
+ a-- >> b,
+ a-- >> b + c,
+ a + b-- >> c,
+ a, b, c
+ );
+ })(1, 2, 3);
}
- expect_exact: "function f(a,b){return a-- >b}";
+ expect_exact: "(function(a,b,c){console.log(a-- >>b,a-- >>b+c,a+b-- >>c,a,b,c)})(1,2,3);"
+ expect_stdout: "0 0 0 -1 1 3"
}
-html_comment_in_greater_than_or_equal: {
+html_comment_in_zero_fill_right_shift: {
input: {
- function f(a, b) { return a-- >= b; }
+ (function(a, b, c) {
+ console.log(
+ a-- >>> b,
+ a-- >>> b + c,
+ a + b-- >>> c,
+ a, b, c
+ );
+ })(1, 2, 3);
}
- expect_exact: "function f(a,b){return a-- >=b}";
+ expect_exact: "(function(a,b,c){console.log(a-- >>>b,a-- >>>b+c,a+b-- >>>c,a,b,c)})(1,2,3);"
+ expect_stdout: "0 0 0 -1 1 3"
}
html_comment_in_string_literal: {
input: {
- function f() { return "<!--HTML-->comment in<!--string literal-->"; }
+ console.log("<!--HTML-->comment in<!--string literal-->".length);
}
- expect_exact: 'function f(){return"\\x3c!--HTML--\\x3ecomment in\\x3c!--string literal--\\x3e"}';
+ expect_exact: 'console.log("\\x3c!--HTML--\\x3ecomment in\\x3c!--string literal--\\x3e".length);'
+ expect_stdout: "42"
}