From 5cb381cbe0c34a99d433d9075cfc5830b52dfbb7 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 6 Jan 2020 11:15:26 -0800 Subject: [PATCH] super evaluation order tests For https://github.com/tc39/ecma262/pull/1775 --- .../class/super-evaluation-order.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 test/language/expressions/class/super-evaluation-order.js diff --git a/test/language/expressions/class/super-evaluation-order.js b/test/language/expressions/class/super-evaluation-order.js new file mode 100644 index 0000000000..11f5f3f353 --- /dev/null +++ b/test/language/expressions/class/super-evaluation-order.js @@ -0,0 +1,29 @@ +// Copyright (C) 2020 Jordan Harband. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: prod-SuperCall +description: SuperCall should evaluate Arguments prior to checking IsConstructable +info: | + GetSuperConstructor ( ) + + [...] + 1. Let _func_ be ! GetSuperConstructor(). + 2. Let _argList_ be ? ArgumentListEvaluation of |Arguments|. + 3. If IsConstructor(_func_) is *false*, throw a *TypeError* exception. + [...] +features: [default-parameters] +---*/ + +var x = 0; +class C extends Object { + constructor() { + super(x = 123); + } +} + +Object.setPrototypeOf(C, parseInt); + +assert.throws(TypeError, () => { + new C(); +}); +assert.sameValue(x, 123, 'via ArgumentListEvaluation');