-
Notifications
You must be signed in to change notification settings - Fork 54
/
destructuring-for-inof-__proto__.js
85 lines (64 loc) · 2.19 KB
/
destructuring-for-inof-__proto__.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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");