--- /dev/null
+function test(actual, expected) {
+ if (actual !== expected)
+ throw new Error('bad value: ' + actual);
+}
+
+test(Array.prototype[Symbol.iterator], Array.prototype.values);
+test(Map.prototype[Symbol.iterator], Map.prototype.entries);
+test(Set.prototype[Symbol.iterator], Set.prototype.values);
+
+function argumentsTests(values) {
+ test(function () {
+ return arguments[Symbol.iterator];
+ }(), values);
+
+ test(function (a, b, c) {
+ return arguments[Symbol.iterator];
+ }(), values);
+
+ test(function () {
+ 'use strict';
+ return arguments[Symbol.iterator];
+ }(), values);
+
+ test(function (a, b, c) {
+ 'use strict';
+ return arguments[Symbol.iterator];
+ }(), values);
+}
+
+argumentsTests(Array.prototype.values);
+var arrayValues = Array.prototype.values;
+Array.prototype.values = null;
+argumentsTests(arrayValues);