| // Copyright (C) 2016 the V8 project authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| esid: sec-date-value |
| description: Error retrieving `Symbol.toPrimitive` method from object value |
| info: | |
| 3. If NewTarget is not undefined, then |
| [...] |
| c. Let O be ? OrdinaryCreateFromConstructor(NewTarget, "%DatePrototype%", |
| « [[DateValue]] »). |
| [...] |
| |
| OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , |
| internalSlotsList ] ) |
| |
| [...] |
| 2. Let proto be ? GetPrototypeFromConstructor(constructor, |
| intrinsicDefaultProto). |
| 3. Return ObjectCreate(proto, internalSlotsList). |
| features: [Reflect] |
| ---*/ |
| |
| var callCount = 0; |
| var Ctor = function() { |
| callCount += 1; |
| }; |
| var instance; |
| |
| instance = Reflect.construct(Date, [64], Ctor); |
| |
| assert.sameValue( |
| Object.getPrototypeOf(instance), |
| Ctor.prototype, |
| 'constructor defines an object `prototype` property' |
| ); |
| assert.sameValue(callCount, 0, 'constructor not invoked'); |
| assert.sameValue( |
| Date.prototype.getTime.call(instance), |
| 64, |
| 'proper subclass has a [[DateValue]] slot' |
| ); |
| |
| Ctor.prototype = null; |
| instance = Reflect.construct(Date, [64], Ctor); |
| |
| assert.sameValue( |
| Object.getPrototypeOf(instance), |
| Date.prototype, |
| 'constructor does not defines an object `prototype` property' |
| ); |
| assert.sameValue(callCount, 0, 'constructor not invoked'); |
| assert.sameValue( |
| instance.getTime(), 64, 'direct instance has a [[DateValue]] slot' |
| ); |