From 2bee5df77a51f057249d25b3b20df19a0982f098 Mon Sep 17 00:00:00 2001
From: Leo Balter <leonardo.balter@gmail.com>
Date: Thu, 7 Sep 2017 18:17:05 -0400
Subject: [PATCH] Add missing Symbol.iterator feature flags

---
 .../Array/from/source-object-iterator-1.js    |  1 +
 .../Array/from/source-object-iterator-2.js    |  1 +
 .../Symbol.toStringTag/value-direct.js        | 11 ++++++-----
 .../value-from-to-string.js                   | 13 +++++++------
 .../next/Float32Array.js                      |  2 +-
 .../next/Float64Array.js                      |  2 +-
 .../ArrayIteratorPrototype/next/Int16Array.js |  2 +-
 .../ArrayIteratorPrototype/next/Int32Array.js |  2 +-
 .../ArrayIteratorPrototype/next/Int8Array.js  |  2 +-
 .../next/Uint16Array.js                       |  2 +-
 .../next/Uint32Array.js                       |  2 +-
 .../ArrayIteratorPrototype/next/Uint8Array.js |  2 +-
 .../next/Uint8ClampedArray.js                 |  2 +-
 .../args-mapped-expansion-after-exhaustion.js |  1 +
 ...args-mapped-expansion-before-exhaustion.js |  1 +
 .../next/args-mapped-iteration.js             |  1 +
 ...rgs-mapped-truncation-before-exhaustion.js |  1 +
 ...rgs-unmapped-expansion-after-exhaustion.js |  1 +
 ...gs-unmapped-expansion-before-exhaustion.js |  1 +
 .../next/args-unmapped-iteration.js           |  1 +
 ...s-unmapped-truncation-before-exhaustion.js |  1 +
 .../next/iteration-mutable.js                 | 19 ++++++++++---------
 .../ArrayIteratorPrototype/next/iteration.js  | 13 +++++++------
 .../ArrayIteratorPrototype/next/length.js     |  1 +
 .../ArrayIteratorPrototype/next/name.js       |  1 +
 .../next/non-own-slots.js                     | 13 +++++++------
 .../next/property-descriptor.js               | 15 ++++++++-------
 .../set-iterator-close-after-add-failure.js   |  1 +
 .../Set/set-iterator-next-failure.js          |  1 +
 .../Set/set-iterator-value-failure.js         |  1 +
 .../StringIteratorPrototype/ancestry.js       |  1 +
 .../StringIteratorPrototype/next/name.js      |  1 +
 .../next/next-iteration-surrogate-pairs.js    |  1 +
 .../next/next-iteration.js                    |  1 +
 .../next/next-missing-internal-slots.js       |  1 +
 .../Symbol/keyFor/arg-symbol-registry-miss.js |  2 +-
 .../iterator-close-after-set-failure.js       |  1 +
 .../WeakMap/iterator-next-failure.js          |  1 +
 .../WeakMap/iterator-value-failure.js         |  1 +
 .../iterator-close-after-add-failure.js       |  1 +
 .../WeakSet/iterator-next-failure.js          |  1 +
 .../WeakSet/iterator-value-failure.js         |  1 +
 .../expressions/yield/star-iterable.js        |  1 +
 .../internals/define-own-property.js          |  2 +-
 .../for-of/Array.prototype.Symbol.iterator.js | 11 ++++++-----
 45 files changed, 89 insertions(+), 55 deletions(-)

diff --git a/test/built-ins/Array/from/source-object-iterator-1.js b/test/built-ins/Array/from/source-object-iterator-1.js
index 6c65e005f8..94834b5cf0 100644
--- a/test/built-ins/Array/from/source-object-iterator-1.js
+++ b/test/built-ins/Array/from/source-object-iterator-1.js
@@ -5,6 +5,7 @@
 description: Source object has iterator which throws
 esid: sec-array.from
 es6id: 22.1.2.1
+features: [Symbol.iterator]
 ---*/
 
 var array = [ 2, 4, 8, 16, 32, 64, 128 ];
diff --git a/test/built-ins/Array/from/source-object-iterator-2.js b/test/built-ins/Array/from/source-object-iterator-2.js
index 0245c2b5fb..9bcd570537 100644
--- a/test/built-ins/Array/from/source-object-iterator-2.js
+++ b/test/built-ins/Array/from/source-object-iterator-2.js
@@ -5,6 +5,7 @@
 description: Source object has iterator
 esid: sec-array.from
 es6id: 22.1.2.1
+features: [Symbol.iterator]
 ---*/
 
 var array = [ 2, 4, 8, 16, 32, 64, 128 ];
diff --git a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js
index f882774426..a95cdce444 100644
--- a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js
+++ b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-direct.js
@@ -2,11 +2,12 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%-@@tostringtag
-  description: >
-      The @@toStringTag attribute should be defined directly on the prototype.
-  es6id: 22.1.5.2.2
- ---*/
+esid: sec-%arrayiteratorprototype%-@@tostringtag
+description: >
+  The @@toStringTag attribute should be defined directly on the prototype.
+es6id: 22.1.5.2.2
+features: [Symbol.iterator]
+---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
 
diff --git a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js
index a0d8f3a9ee..8a47db9fb0 100644
--- a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js
+++ b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/value-from-to-string.js
@@ -2,12 +2,13 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%-@@tostringtag
-  description: >
-      `Object.prototype.toString` should honor the value of the @@toStringTag
-      attribute.
-  es6id: 22.1.5.2.2
- ---*/
+esid: sec-%arrayiteratorprototype%-@@tostringtag
+description: >
+    `Object.prototype.toString` should honor the value of the @@toStringTag
+    attribute.
+es6id: 22.1.5.2.2
+features: [Symbol.iterator]
+---*/
 
 var iter = [][Symbol.iterator]();
 
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js b/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js
index 584d140ca1..6984e24762 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Float32Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Float32Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js b/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js
index 4d50d88629..f0173a349f 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Float64Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Float64Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js b/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js
index 554c55aa0e..c0008b5ab1 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Int16Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Int16Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js b/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js
index e992bbe2ca..f8a1d4b379 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Int32Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Int32Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js b/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js
index fdfb8caccf..d22477e142 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Int8Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Int8Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js b/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js
index 355f890430..ca9baa84d9 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint16Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint16Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js b/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js
index c8ef5fb211..28801acb48 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint32Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint32Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js b/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js
index 698d032e18..dfb5128c82 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint8Array.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint8Array([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js b/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js
index 7f8b8d9648..f8098597d9 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/Uint8ClampedArray.js
@@ -6,7 +6,7 @@ esid: sec-%arrayiteratorprototype%.next
 description: >
     Visits each element of the array in order and ceases iteration once all
     values have been visited.
-features: [TypedArray]
+features: [Symbol.iterator, TypedArray]
 ---*/
 var array = new Uint8ClampedArray([3, 1, 2]);
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js
index 5d2b000a77..93ad4d39bc 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-after-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Once exhausted, iterators for mapped arguments exotic objects should not
     emit new values added to the object.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js
index 6919e1b745..b87cde4d33 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-expansion-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for mapped arguments exotic objects
     should honor the insertion of additional argument values.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js
index 36ef786a36..ed94d03360 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-iteration.js
@@ -7,6 +7,7 @@ description: >
     Mapped arguments exotic objects should implement the Array iterator
     protocol.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js
index 91cd87a09a..6af6427a15 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-mapped-truncation-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for mapped arguments exotic objects
     should honor argument removal.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js
index f1fdbec5d9..1424c2a198 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-after-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Once exhausted, iterators for unmapped arguments exotic objects should not
     emit new values added to the object.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js
index d7ad14a815..47ab198f80 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-expansion-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for unmapped arguments exotic objects
     should honor the insertion of additional argument values.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js
index 180d631830..6796859cf8 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-iteration.js
@@ -7,6 +7,7 @@ description: >
     Unmapped arguments exotic objects should implement the Array iterator
     protocol.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js
index f733f7c696..f156b6b2c6 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/args-unmapped-truncation-before-exhaustion.js
@@ -7,6 +7,7 @@ description: >
     Prior to being exhausted, iterators for unmapped arguments exotic objects
     should honor argument removal.
 flags: [noStrict]
+features: [Symbol.iterator]
 ---*/
 
 (function(a, b, c) {
diff --git a/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js b/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js
index 373bfa30d5..b133783133 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/iteration-mutable.js
@@ -2,15 +2,16 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%.next
-  description: >
-      When an item is added to the array after the iterator is created but
-      before the iterator is "done" (as defined by 22.1.5.2.1), the new item
-      should be accessible via iteration. When an item is added to the array
-      after the iterator is "done", the new item should not be accessible via
-      iteration.
-  es6id: 22.1.3.30
- ---*/
+esid: sec-%arrayiteratorprototype%.next
+description: >
+    When an item is added to the array after the iterator is created but
+    before the iterator is "done" (as defined by 22.1.5.2.1), the new item
+    should be accessible via iteration. When an item is added to the array
+    after the iterator is "done", the new item should not be accessible via
+    iteration.
+es6id: 22.1.3.30
+features: [Symbol.iterator]
+---*/
 
 var array = [];
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/iteration.js b/test/built-ins/ArrayIteratorPrototype/next/iteration.js
index b2f908653d..f189ad0a40 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/iteration.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/iteration.js
@@ -2,12 +2,13 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%.next
-  description: >
-      The method should return a valid iterator with the context as the
-      IteratedObject.
-  es6id: 22.1.3.30
- ---*/
+esid: sec-%arrayiteratorprototype%.next
+description: >
+    The method should return a valid iterator with the context as the
+    IteratedObject.
+es6id: 22.1.3.30
+features: [Symbol.iterator]
+---*/
 
 var array = ['a', 'b', 'c'];
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/length.js b/test/built-ins/ArrayIteratorPrototype/next/length.js
index e7c2ffde4e..b95a4aa4fd 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/length.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/length.js
@@ -21,6 +21,7 @@ info: >
     object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
     [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Symbol.iterator]
 ---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
diff --git a/test/built-ins/ArrayIteratorPrototype/next/name.js b/test/built-ins/ArrayIteratorPrototype/next/name.js
index b94ec6eda1..d7b4c7b65b 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/name.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/name.js
@@ -18,6 +18,7 @@ info: >
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Symbol.iterator]
 ---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
diff --git a/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js b/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js
index c232327f91..0327dc1b6e 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/non-own-slots.js
@@ -2,12 +2,13 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  description: >
-      If the `this` value does not have all of the internal slots of an Array
-      Iterator Instance (22.1.5.3), throw a TypeError exception.
-  es6id: 22.1.5.2.1
-  esid: sec-%arrayiteratorprototype%.next
- ---*/
+description: >
+    If the `this` value does not have all of the internal slots of an Array
+    Iterator Instance (22.1.5.3), throw a TypeError exception.
+es6id: 22.1.5.2.1
+esid: sec-%arrayiteratorprototype%.next
+features: [Symbol.iterator]
+---*/
 
 var array = [0];
 var iterator = array[Symbol.iterator]();
diff --git a/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js b/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js
index 808b2fea03..aeadb7ddda 100644
--- a/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js
+++ b/test/built-ins/ArrayIteratorPrototype/next/property-descriptor.js
@@ -2,13 +2,14 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  esid: sec-%arrayiteratorprototype%.next
-  description: >
-      The method should exist on the ArrayIterator prototype, and it should be
-      writable and configurable, but not enumerable.
-  includes: [propertyHelper.js]
-  es6id: 17
- ---*/
+esid: sec-%arrayiteratorprototype%.next
+description: >
+    The method should exist on the ArrayIterator prototype, and it should be
+    writable and configurable, but not enumerable.
+includes: [propertyHelper.js]
+es6id: 17
+features: [Symbol.iterator]
+---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
 
diff --git a/test/built-ins/Set/set-iterator-close-after-add-failure.js b/test/built-ins/Set/set-iterator-close-after-add-failure.js
index 260327e08b..fa2c30b9db 100644
--- a/test/built-ins/Set/set-iterator-close-after-add-failure.js
+++ b/test/built-ins/Set/set-iterator-close-after-add-failure.js
@@ -17,6 +17,7 @@ description: >
       f. Let status be Call(adder, set, «nextValue.[[value]]»).
       g. If status is an abrupt completion, return IteratorClose(iter, status).
 
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/Set/set-iterator-next-failure.js b/test/built-ins/Set/set-iterator-next-failure.js
index 8cc0ad975a..9879baf9bf 100644
--- a/test/built-ins/Set/set-iterator-next-failure.js
+++ b/test/built-ins/Set/set-iterator-next-failure.js
@@ -11,6 +11,7 @@ description: >
     9. Repeat
       a. Let next be IteratorStep(iter).
       b. ReturnIfAbrupt(next).
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/Set/set-iterator-value-failure.js b/test/built-ins/Set/set-iterator-value-failure.js
index 7a54716e53..04e943a419 100644
--- a/test/built-ins/Set/set-iterator-value-failure.js
+++ b/test/built-ins/Set/set-iterator-value-failure.js
@@ -12,6 +12,7 @@ description: >
       ...
       d. Let nextValue be IteratorValue(next).
       e. ReturnIfAbrupt(nextValue).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/StringIteratorPrototype/ancestry.js b/test/built-ins/StringIteratorPrototype/ancestry.js
index 4d81cc20f6..aee0009956 100644
--- a/test/built-ins/StringIteratorPrototype/ancestry.js
+++ b/test/built-ins/StringIteratorPrototype/ancestry.js
@@ -5,6 +5,7 @@ es6id: 21.1.5.2
 description: >
     The [[Prototype]] internal slot ofthe %StringIteratorPrototype% is the
     %IteratorPrototype% intrinsic object (25.1.2).
+features: [Symbol.iterator]
 ---*/
 
 var strItrProto = Object.getPrototypeOf(''[Symbol.iterator]());
diff --git a/test/built-ins/StringIteratorPrototype/next/name.js b/test/built-ins/StringIteratorPrototype/next/name.js
index a0a9aae758..adae55e078 100644
--- a/test/built-ins/StringIteratorPrototype/next/name.js
+++ b/test/built-ins/StringIteratorPrototype/next/name.js
@@ -17,6 +17,7 @@ info: >
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
+features: [Symbol.iterator]
 ---*/
 
 var StringIteratorProto = Object.getPrototypeOf(new String()[Symbol.iterator]());
diff --git a/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js b/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js
index c2b5d2d1be..c57621e139 100644
--- a/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js
+++ b/test/built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js
@@ -5,6 +5,7 @@ es6id: 21.1.5.2.1
 description: >
     Iteration should respect UTF-16-encoded Unicode code points specified via
     surrogate pairs.
+features: [Symbol.iterator]
 ---*/
 
 var lo = '\uD834';
diff --git a/test/built-ins/StringIteratorPrototype/next/next-iteration.js b/test/built-ins/StringIteratorPrototype/next/next-iteration.js
index 1b3fc081fd..f43cd3f710 100644
--- a/test/built-ins/StringIteratorPrototype/next/next-iteration.js
+++ b/test/built-ins/StringIteratorPrototype/next/next-iteration.js
@@ -4,6 +4,7 @@
 es6id: 21.1.5.2.1
 description: >
     Iteration should visit each UTF-8 code point exactly once.
+features: [Symbol.iterator]
 ---*/
 
 var string = "abc";
diff --git a/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js b/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js
index 08c795a0fb..4eb96687be 100644
--- a/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js
+++ b/test/built-ins/StringIteratorPrototype/next/next-missing-internal-slots.js
@@ -5,6 +5,7 @@ es6id: 21.1.5.2.1 S 3
 description: >
     If the `this` value does not have all of the internal slots of an String
     Iterator Instance (21.1.5.3), throw a `TypeError` exception.
+features: [Symbol.iterator]
 ---*/
 
 var iterator = ''[Symbol.iterator]();
diff --git a/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js b/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
index 2f70c632a8..920e2e423c 100644
--- a/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
+++ b/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
@@ -12,7 +12,7 @@ info: >
     3. Assert: GlobalSymbolRegistry does not currently contain an entry for
        sym.
     4. Return undefined. 
-features: [Symbol]
+features: [Symbol.iterator, Symbol]
 ---*/
 
 var constructed = Symbol('Symbol.iterator');
diff --git a/test/built-ins/WeakMap/iterator-close-after-set-failure.js b/test/built-ins/WeakMap/iterator-close-after-set-failure.js
index 2624cf1c06..1fd3af4506 100644
--- a/test/built-ins/WeakMap/iterator-close-after-set-failure.js
+++ b/test/built-ins/WeakMap/iterator-close-after-set-failure.js
@@ -12,6 +12,7 @@ info: >
   9. Repeat
     k. Let status be Call(adder, map, «k.[[value]], v.[[value]]»).
     l. If status is an abrupt completion, return IteratorClose(iter, status).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/WeakMap/iterator-next-failure.js b/test/built-ins/WeakMap/iterator-next-failure.js
index ef0be06876..3a88a4a7a1 100644
--- a/test/built-ins/WeakMap/iterator-next-failure.js
+++ b/test/built-ins/WeakMap/iterator-next-failure.js
@@ -13,6 +13,7 @@ info: >
     a. Let next be IteratorStep(iter).
     b. ReturnIfAbrupt(next).
     ...
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/WeakMap/iterator-value-failure.js b/test/built-ins/WeakMap/iterator-value-failure.js
index eaad1004c5..2af5efcf71 100644
--- a/test/built-ins/WeakMap/iterator-value-failure.js
+++ b/test/built-ins/WeakMap/iterator-value-failure.js
@@ -14,6 +14,7 @@ info: >
     d. Let nextItem be IteratorValue(next).
     e. ReturnIfAbrupt(nextItem).
     ...
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/WeakSet/iterator-close-after-add-failure.js b/test/built-ins/WeakSet/iterator-close-after-add-failure.js
index fcd9619438..cb7e1e2082 100644
--- a/test/built-ins/WeakSet/iterator-close-after-add-failure.js
+++ b/test/built-ins/WeakSet/iterator-close-after-add-failure.js
@@ -12,6 +12,7 @@ info: >
   9. Repeat
     f. Let status be Call(adder, set, «nextValue»).
     g. If status is an abrupt completion, return IteratorClose(iter, status).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/built-ins/WeakSet/iterator-next-failure.js b/test/built-ins/WeakSet/iterator-next-failure.js
index 83ec0b2ada..020dc25f4b 100644
--- a/test/built-ins/WeakSet/iterator-next-failure.js
+++ b/test/built-ins/WeakSet/iterator-next-failure.js
@@ -13,6 +13,7 @@ info: >
     a. Let next be IteratorStep(iter).
     b. ReturnIfAbrupt(next).
     ...
+features: [Symbol.iterator]
 ---*/
 
 var iterable = {};
diff --git a/test/built-ins/WeakSet/iterator-value-failure.js b/test/built-ins/WeakSet/iterator-value-failure.js
index 8e692feff1..4cdf446c49 100644
--- a/test/built-ins/WeakSet/iterator-value-failure.js
+++ b/test/built-ins/WeakSet/iterator-value-failure.js
@@ -13,6 +13,7 @@ info: >
     ...
     d. Let nextValue be IteratorValue(next).
     e. ReturnIfAbrupt(nextValue).
+features: [Symbol.iterator]
 ---*/
 
 var count = 0;
diff --git a/test/language/expressions/yield/star-iterable.js b/test/language/expressions/yield/star-iterable.js
index e961c2ca7e..668fc28bf5 100644
--- a/test/language/expressions/yield/star-iterable.js
+++ b/test/language/expressions/yield/star-iterable.js
@@ -5,6 +5,7 @@ es6id: 25.2
 description: >
     When an iterator is the operand of a `yield *` expression, the generator
     should produce an iterator that visits each iterated item.
+features: [Symbol.iterator]
 ---*/
 
 var results = [{ value: 1 }, { value: 8 }, { value: 34, done: true }];
diff --git a/test/language/module-code/namespace/internals/define-own-property.js b/test/language/module-code/namespace/internals/define-own-property.js
index 4607100f26..23a22c2f26 100644
--- a/test/language/module-code/namespace/internals/define-own-property.js
+++ b/test/language/module-code/namespace/internals/define-own-property.js
@@ -6,7 +6,7 @@ description: >
     The [[DefineOwnProperty]] internal method returns `true` if no change is
     requested, and `false` otherwise.
 flags: [module]
-features: [Reflect, Symbol, Symbol.toStringTag]
+features: [Symbol.iterator, Reflect, Symbol, Symbol.toStringTag]
 ---*/
 
 import * as ns from './define-own-property.js';
diff --git a/test/language/statements/for-of/Array.prototype.Symbol.iterator.js b/test/language/statements/for-of/Array.prototype.Symbol.iterator.js
index 9667acac6c..98ccbe9bd4 100644
--- a/test/language/statements/for-of/Array.prototype.Symbol.iterator.js
+++ b/test/language/statements/for-of/Array.prototype.Symbol.iterator.js
@@ -2,11 +2,12 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  description: >
-      The method should return a valid iterator that can be traversed using a
-      `for...of` loop.
-  es6id: 22.1.3.30
- ---*/
+description: >
+    The method should return a valid iterator that can be traversed using a
+    `for...of` loop.
+es6id: 22.1.3.30
+features: [Symbol.iterator]
+---*/
 
 var array = [0, 'a', true, false, null, /* hole */, undefined, NaN];
 var i = 0;
-- 
GitLab