diff options
-rw-r--r-- | lib/output.js | 2 | ||||
-rw-r--r-- | test/compress/new.js | 25 |
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);" +} |