// Copyright (C) 2015 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 9.2.2 description: > [[Construct]] ( argumentsList, newTarget) ... 13. If result.[[type]] is return, then ... c. If result.[[value]] is not undefined, ... 14. Else, ReturnIfAbrupt(result). 15. Return envRec.GetThisBinding(). `return undefined;` ---*/ var calls = 0; class Base { constructor() { this.prop = 1; calls++; } } class Derived extends Base { constructor() { super(); return undefined; } } var object = new Derived(); // super is called assert.sameValue(calls, 1, "The value of `calls` is `1`, because `super()`"); // undefined was returned assert.sameValue(object.prop, 1); assert.sameValue(object instanceof Derived, true); assert.sameValue(object instanceof Base, true); reportCompare(0, 0);