| Index: test/mjsunit/es6/object-tostring.js
|
| diff --git a/test/mjsunit/es6/object-tostring.js b/test/mjsunit/es6/object-tostring.js
|
| index 29d07f263a41b9cf6b70bae5e821d9d58bfabe94..6a2ff280665395c85c95d3776d9e366abc7fa5fd 100644
|
| --- a/test/mjsunit/es6/object-tostring.js
|
| +++ b/test/mjsunit/es6/object-tostring.js
|
| @@ -15,15 +15,16 @@ var funs = {
|
| RegExp: [ RegExp ],
|
| Error: [ Error, TypeError, RangeError, SyntaxError, ReferenceError,
|
| EvalError, URIError ]
|
| -}
|
| -for (f in funs) {
|
| - for (i in funs[f]) {
|
| +};
|
| +for (var f in funs) {
|
| + for (var i in funs[f]) {
|
| +
|
| assertEquals("[object " + f + "]",
|
| - Object.prototype.toString.call(new funs[f][i]),
|
| - funs[f][i]);
|
| + Object.prototype.toString.call(new funs[f][i]),
|
| + funs[f][i]);
|
| assertEquals("[object Function]",
|
| - Object.prototype.toString.call(funs[f][i]),
|
| - funs[f][i]);
|
| + Object.prototype.toString.call(funs[f][i]),
|
| + funs[f][i]);
|
| }
|
| }
|
|
|
| @@ -130,11 +131,11 @@ function testObjectToStringPropertyDesc() {
|
| }
|
| testObjectToStringPropertyDesc();
|
|
|
| -function testObjectToStringOwnNonStringValue() {
|
| - var obj = Object.defineProperty({}, Symbol.toStringTag, { value: 1 });
|
| +function testObjectToStringOnNonStringValue(obj) {
|
| + Object.defineProperty(obj, Symbol.toStringTag, { value: 1 });
|
| assertEquals("[object Object]", ({}).toString.call(obj));
|
| }
|
| -testObjectToStringOwnNonStringValue();
|
| +testObjectToStringOnNonStringValue({});
|
|
|
|
|
| // Proxies
|
| @@ -149,11 +150,64 @@ assertTag("Function", new Proxy(() => 42, {}));
|
| assertTag("Foo", new Proxy(() => 42, {get() {return "Foo"}}));
|
| assertTag("Function", new Proxy(() => 42, {get() {return 666}}));
|
|
|
| -revocable = Proxy.revocable([], {});
|
| +var revocable = Proxy.revocable([], {});
|
| revocable.revoke();
|
| assertThrows(() => Object.prototype.toString.call(revocable.proxy), TypeError);
|
|
|
| -handler = {};
|
| +var handler = {};
|
| revocable = Proxy.revocable([], handler);
|
| handler.get = () => revocable.revoke();
|
| assertThrows(() => Object.prototype.toString.call(revocable.proxy), TypeError);
|
| +
|
| +function* gen() { yield 1; }
|
| +
|
| +assertTag("GeneratorFunction", gen);
|
| +Object.defineProperty(gen, Symbol.toStringTag, {writable: true});
|
| +gen[Symbol.toStringTag] = "different string";
|
| +assertTag("different string", gen);
|
| +gen[Symbol.toStringTag] = 1;
|
| +assertTag("Function", gen);
|
| +
|
| +function overwriteToStringTagWithNonStringValue(tag, obj) {
|
| + assertTag(tag, obj);
|
| +
|
| + Object.defineProperty(obj, Symbol.toStringTag, {
|
| + configurable: true,
|
| + value: "different string"
|
| + });
|
| + assertTag("different string", obj);
|
| +
|
| + testObjectToStringOnNonStringValue(obj);
|
| +}
|
| +
|
| +overwriteToStringTagWithNonStringValue("global", global);
|
| +overwriteToStringTagWithNonStringValue("Generator", gen());
|
| +
|
| +var arrayBuffer = new ArrayBuffer();
|
| +overwriteToStringTagWithNonStringValue("ArrayBuffer", arrayBuffer);
|
| +overwriteToStringTagWithNonStringValue("DataView", new DataView(arrayBuffer));
|
| +
|
| +overwriteToStringTagWithNonStringValue("Int8Array", new Int8Array());
|
| +overwriteToStringTagWithNonStringValue("Uint8Array", new Uint8Array());
|
| +overwriteToStringTagWithNonStringValue("Uint8ClampedArray",
|
| + new Uint8ClampedArray());
|
| +overwriteToStringTagWithNonStringValue("Int16Array", new Int16Array());
|
| +overwriteToStringTagWithNonStringValue("Uint16Array", new Uint16Array());
|
| +overwriteToStringTagWithNonStringValue("Int32Array", new Int32Array());
|
| +overwriteToStringTagWithNonStringValue("Uint32Array", new Uint32Array());
|
| +overwriteToStringTagWithNonStringValue("Float32Array", new Float32Array());
|
| +overwriteToStringTagWithNonStringValue("Float64Array", new Float64Array());
|
| +
|
| +var set = new Set();
|
| +var map = new Map();
|
| +
|
| +overwriteToStringTagWithNonStringValue("Set", set);
|
| +overwriteToStringTagWithNonStringValue("Map", map);
|
| +
|
| +overwriteToStringTagWithNonStringValue("Set Iterator", set[Symbol.iterator]());
|
| +overwriteToStringTagWithNonStringValue("Map Iterator", map[Symbol.iterator]());
|
| +
|
| +overwriteToStringTagWithNonStringValue("WeakSet", new WeakSet());
|
| +overwriteToStringTagWithNonStringValue("WeakMap", new WeakMap());
|
| +
|
| +overwriteToStringTagWithNonStringValue("Promise", new Promise(function() {}));
|
|
|