From 14b6bec36db654c8ab275aeda2d0796193feaf12 Mon Sep 17 00:00:00 2001 From: Alexey Shvayka Date: Mon, 24 Jun 2019 23:45:13 +0300 Subject: [PATCH] Add unary operators with NewTarget test (#2199) --- .../expressions/new.target/unary-expr.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/language/expressions/new.target/unary-expr.js diff --git a/test/language/expressions/new.target/unary-expr.js b/test/language/expressions/new.target/unary-expr.js new file mode 100644 index 0000000000..0e3592c50d --- /dev/null +++ b/test/language/expressions/new.target/unary-expr.js @@ -0,0 +1,31 @@ +// Copyright (C) 2019 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: prod-UnaryExpression +description: > + While increments and decrements are restricted to use with NewTarget, + other unary operators should not throw SyntaxError. +info: | + UnaryExpression[Yield, Await]: + UpdateExpression[?Yield, ?Await]: + LeftHandSideExpression[?Yield, ?Await]: + NewExpression[?Yield, ?Await]: + MemberExpression[Yield, Await]: + MetaProperty: + NewTarget +features: [new.target, async-functions] +flags: [async] +---*/ + +(function() { assert.sameValue(delete (new.target), true); })(); +(function() { assert.sameValue(void new.target, undefined); })(); +new function() { assert.sameValue(typeof new.target, 'function'); }; +new function() { assert.sameValue(+(new.target), NaN); }; +(function() { assert.sameValue(-(new.target), NaN); })(); +new function() { assert.sameValue(~new.target, -1); }; +(function() { assert.sameValue(!new.target, true); })(); +new function() { assert.sameValue(delete void typeof +-~!(new.target), true); }; + +(async function() { + assert.sameValue(await new.target, undefined); +})().then($DONE, $DONE);