diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js')
-rw-r--r-- | js/src/tests/test262/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js b/js/src/tests/test262/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js new file mode 100644 index 0000000000..2bbe595669 --- /dev/null +++ b/js/src/tests/test262/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js @@ -0,0 +1,51 @@ +// |reftest| skip-if(!this.hasOwnProperty('SharedArrayBuffer')) -- SharedArrayBuffer is not enabled unconditionally +// Copyright (C) 2015 André Bargull. All rights reserved. +// Copyright (C) 2017 Mozilla Foundation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-sharedarraybuffer-length +description: > + [[Prototype]] defaults to %SharedArrayBufferPrototype% if NewTarget.prototype is not an object. +info: | + SharedArrayBuffer( length ) + + SharedArrayBuffer called with argument length performs the following steps: + + ... + 3. Return AllocateSharedArrayBuffer(NewTarget, byteLength). + + AllocateSharedArrayBuffer( constructor, byteLength ) + 1. Let obj be ? OrdinaryCreateFromConstructor(constructor, "%SharedArrayBufferPrototype%", + «[[ArrayBufferData]], [[ArrayBufferByteLength]]» ). + ... +features: [SharedArrayBuffer, Symbol, Reflect.construct] +---*/ + +function newTarget() {} + +newTarget.prototype = undefined; +var arrayBuffer = Reflect.construct(SharedArrayBuffer, [1], newTarget); +assert.sameValue(Object.getPrototypeOf(arrayBuffer), SharedArrayBuffer.prototype, "newTarget.prototype is undefined"); + +newTarget.prototype = null; +var arrayBuffer = Reflect.construct(SharedArrayBuffer, [2], newTarget); +assert.sameValue(Object.getPrototypeOf(arrayBuffer), SharedArrayBuffer.prototype, "newTarget.prototype is null"); + +newTarget.prototype = true; +var arrayBuffer = Reflect.construct(SharedArrayBuffer, [3], newTarget); +assert.sameValue(Object.getPrototypeOf(arrayBuffer), SharedArrayBuffer.prototype, "newTarget.prototype is a Boolean"); + +newTarget.prototype = ""; +var arrayBuffer = Reflect.construct(SharedArrayBuffer, [4], newTarget); +assert.sameValue(Object.getPrototypeOf(arrayBuffer), SharedArrayBuffer.prototype, "newTarget.prototype is a String"); + +newTarget.prototype = Symbol(); +var arrayBuffer = Reflect.construct(SharedArrayBuffer, [5], newTarget); +assert.sameValue(Object.getPrototypeOf(arrayBuffer), SharedArrayBuffer.prototype, "newTarget.prototype is a Symbol"); + +newTarget.prototype = 1; +var arrayBuffer = Reflect.construct(SharedArrayBuffer, [6], newTarget); +assert.sameValue(Object.getPrototypeOf(arrayBuffer), SharedArrayBuffer.prototype, "newTarget.prototype is a Number"); + +reportCompare(0, 0); |