зеркало из https://github.com/mozilla/gecko-dev.git
Bug 963641 - Add a test for __proto__ in destructuring patterns as a shorthand. r=jorendorff
--HG-- extra : rebase_source : 9d9e5ede1195b7e879a8ca539c9af432c5f2b5d9
This commit is contained in:
Родитель
45c5e06002
Коммит
7690017277
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/licenses/publicdomain/
|
||||
*/
|
||||
|
||||
var gTestfile = 'destructuring-for-inof-__proto__.js';
|
||||
var BUGNUMBER = 963641;
|
||||
var summary =
|
||||
"__proto__ should work in destructuring patterns as the targets of " +
|
||||
"for-in/for-of loops";
|
||||
|
||||
print(BUGNUMBER + ": " + summary);
|
||||
|
||||
/**************
|
||||
* BEGIN TEST *
|
||||
**************/
|
||||
|
||||
function objectWithProtoProperty(v)
|
||||
{
|
||||
var obj = {};
|
||||
return Object.defineProperty(obj, "__proto__",
|
||||
{
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: v
|
||||
});
|
||||
}
|
||||
|
||||
function* objectWithProtoGenerator(v)
|
||||
{
|
||||
yield objectWithProtoProperty(v);
|
||||
}
|
||||
|
||||
function* identityGenerator(v)
|
||||
{
|
||||
yield v;
|
||||
}
|
||||
|
||||
for (var { __proto__: target } of objectWithProtoGenerator(null))
|
||||
assertEq(target, null);
|
||||
|
||||
for ({ __proto__: target } of objectWithProtoGenerator("aacchhorrt"))
|
||||
assertEq(target, "aacchhorrt");
|
||||
|
||||
for ({ __proto__: target } of identityGenerator(42))
|
||||
assertEq(target, Number.prototype);
|
||||
|
||||
for (var { __proto__: target } in { prop: "kneedle" })
|
||||
assertEq(target, String.prototype);
|
||||
|
||||
for ({ __proto__: target } in { prop: "snork" })
|
||||
assertEq(target, String.prototype);
|
||||
|
||||
for ({ __proto__: target } in { prop: "ohia" })
|
||||
assertEq(target, String.prototype);
|
||||
|
||||
function nested()
|
||||
{
|
||||
for (var { __proto__: target } of objectWithProtoGenerator(null))
|
||||
assertEq(target, null);
|
||||
|
||||
for ({ __proto__: target } of objectWithProtoGenerator("aacchhorrt"))
|
||||
assertEq(target, "aacchhorrt");
|
||||
|
||||
for ({ __proto__: target } of identityGenerator(42))
|
||||
assertEq(target, Number.prototype);
|
||||
|
||||
for (var { __proto__: target } in { prop: "kneedle" })
|
||||
assertEq(target, String.prototype);
|
||||
|
||||
for ({ __proto__: target } in { prop: "snork" })
|
||||
assertEq(target, String.prototype);
|
||||
|
||||
for ({ __proto__: target } in { prop: "ohia" })
|
||||
assertEq(target, String.prototype);
|
||||
}
|
||||
nested();
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
if (typeof reportCompare === "function")
|
||||
reportCompare(true, true);
|
||||
|
||||
print("Tests complete");
|
Загрузка…
Ссылка в новой задаче