summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/for-in.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/for-in.js')
-rw-r--r--deps/v8/test/mjsunit/for-in.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/for-in.js b/deps/v8/test/mjsunit/for-in.js
index 94b39cfd57..319f93bd76 100644
--- a/deps/v8/test/mjsunit/for-in.js
+++ b/deps/v8/test/mjsunit/for-in.js
@@ -114,6 +114,32 @@ function props(x) {
}
})();
+(function forInShadowingSlowReceiver() {
+ // crbug 688307
+ // Make sure we track all non-enumerable keys on a slow-mode receiver.
+ let receiver = {a:1};
+ delete receiver.a;
+ let proto = Object.create(null);
+ let enumProperties = [];
+ for (let i = 0; i < 10; i++) {
+ let key = "property_"+i;
+ enumProperties.push(key);
+ receiver[key] = i;
+ proto[key] = i;
+ }
+ for (let i = 0; i < 1000; i++) {
+ let nonEnumKey = "nonEnumerableProperty_"+ i;
+ Object.defineProperty(receiver, nonEnumKey, {});
+ // Add both keys as enumerable to the prototype.
+ proto[nonEnumKey] = i;
+ }
+ receiver.__proto__ = proto;
+ // Only the enumerable properties from the receiver should be visible.
+ for (let key in receiver) {
+ assertEquals(key, enumProperties.shift());
+ }
+})();
+
(function forInCharCodes() {
var o = {};
var a = [];