aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkzc <zaxxon2011@gmail.com>2016-07-23 11:50:44 -0400
committerRichard van Velzen <rvanvelzen1@gmail.com>2016-08-14 21:38:38 +0200
commitfb049d3a81b744a5facf1f032b8b2815c410f178 (patch)
tree3ad06abdddb20e255d0595c637226479874a04d6
parent67cca43358cfcf7ff2e7c9e5532bc975fb2591d0 (diff)
downloadtracifyjs-fb049d3a81b744a5facf1f032b8b2815c410f178.tar.gz
tracifyjs-fb049d3a81b744a5facf1f032b8b2815c410f178.zip
Fix unneeded parens around unary args in new expression.
-rw-r--r--lib/output.js2
-rw-r--r--test/compress/new.js25
2 files changed, 26 insertions, 1 deletions
diff --git a/lib/output.js b/lib/output.js
index 324f96ed..801f7516 100644
--- a/lib/output.js
+++ b/lib/output.js
@@ -533,7 +533,7 @@ function OutputStream(options) {
PARENS([ AST_Unary, AST_Undefined ], function(output){
var p = output.parent();
return p instanceof AST_PropAccess && p.expression === this
- || p instanceof AST_New;
+ || p instanceof AST_Call && p.expression === this;
});
PARENS(AST_Seq, function(output){
diff --git a/test/compress/new.js b/test/compress/new.js
index 78a1026e..bdf22b0c 100644
--- a/test/compress/new.js
+++ b/test/compress/new.js
@@ -50,3 +50,28 @@ new_with_many_parameters: {
}
expect_exact: 'new foo.bar("baz");new x(/123/,456);'
}
+
+new_constructor_with_unary_arguments: {
+ input: {
+ new x();
+ new x(-1);
+ new x(-1, -2);
+ new x(void 1, +2, -3, ~4, !5, --a, ++b, c--, d++, typeof e, delete f);
+ new (-1); // should parse despite being invalid at runtime.
+ new (-1)(); // should parse despite being invalid at runtime.
+ new (-1)(-2); // should parse despite being invalid at runtime.
+ }
+ expect_exact: "new x;new x(-1);new x(-1,-2);new x(void 1,+2,-3,~4,!5,--a,++b,c--,d++,typeof e,delete f);new(-1);new(-1);new(-1)(-2);"
+}
+
+call_with_unary_arguments: {
+ input: {
+ x();
+ x(-1);
+ x(-1, -2);
+ x(void 1, +2, -3, ~4, !5, --a, ++b, c--, d++, typeof e, delete f);
+ (-1)(); // should parse despite being invalid at runtime.
+ (-1)(-2); // should parse despite being invalid at runtime.
+ }
+ expect_exact: "x();x(-1);x(-1,-2);x(void 1,+2,-3,~4,!5,--a,++b,c--,d++,typeof e,delete f);(-1)();(-1)(-2);"
+}