From c41faf1acafa7b5466a8492203aaff93bec58074 Mon Sep 17 00:00:00 2001
From: Leo Balter <leonardo.balter@gmail.com>
Date: Thu, 7 Sep 2017 15:06:13 -0400
Subject: [PATCH] Add missing Symbol features flags

---
 src/async-generators/yield-identifier-spread-non-strict.case    | 2 +-
 src/dstr-assignment-for-await/obj-rest-symbol-val.case          | 2 +-
 src/dstr-assignment/array-empty-val-symbol.case                 | 1 +
 src/dstr-assignment/obj-rest-symbol-val.case                    | 2 +-
 src/generators/yield-identifier-spread-non-strict.case          | 2 +-
 src/spread/obj-spread-order.case                                | 2 +-
 src/spread/obj-symbol-property.case                             | 2 +-
 src/spread/obj-with-overrides.case                              | 2 +-
 .../Array/prototype/sort/comparefn-nonfunction-call-throws.js   | 1 +
 .../prototype/slice/species-constructor-is-not-object.js        | 1 +
 test/built-ins/Boolean/symbol-coercion.js                       | 1 +
 .../return-abrupt-from-tonumber-byteoffset-symbol-sab.js        | 2 +-
 .../DataView/prototype/getInt32/to-boolean-littleendian-sab.js  | 2 +-
 .../DataView/return-abrupt-tonumber-bytelength-symbol-sab.js    | 2 +-
 .../DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js    | 2 +-
 .../Function/prototype/bind/instance-name-non-string.js         | 1 +
 test/built-ins/Map/prototype/size/this-not-object-throw.js      | 1 +
 test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js     | 1 +
 test/built-ins/Object/assign/Target-Symbol.js                   | 1 +
 .../Object/defineProperty/symbol-data-property-configurable.js  | 1 +
 .../defineProperty/symbol-data-property-default-non-strict.js   | 1 +
 .../defineProperty/symbol-data-property-default-strict.js       | 1 +
 .../Object/defineProperty/symbol-data-property-writable.js      | 1 +
 .../frozen-object-contains-symbol-properties-non-strict.js      | 1 +
 .../freeze/frozen-object-contains-symbol-properties-strict.js   | 1 +
 .../object-contains-symbol-property-with-description.js         | 1 +
 .../object-contains-symbol-property-without-description.js      | 1 +
 test/built-ins/Object/is/not-same-value-x-y-symbol.js           | 1 +
 test/built-ins/Object/is/same-value-x-y-symbol.js               | 1 +
 test/built-ins/Object/is/symbol-object-is-same-value.js         | 1 +
 test/built-ins/Object/keys/proxy-keys.js                        | 1 +
 .../symbol-object-contains-symbol-properties-non-strict.js      | 1 +
 .../symbol-object-contains-symbol-properties-strict.js          | 1 +
 .../Object/prototype/hasOwnProperty/symbol_own_property.js      | 1 +
 .../Object/prototype/hasOwnProperty/symbol_property_toString.js | 1 +
 .../Object/prototype/hasOwnProperty/symbol_property_valueOf.js  | 1 +
 .../prototype/propertyIsEnumerable/symbol_own_property.js       | 1 +
 .../prototype/propertyIsEnumerable/symbol_property_toString.js  | 1 +
 .../prototype/propertyIsEnumerable/symbol_property_valueOf.js   | 1 +
 .../seal/symbol-object-contains-symbol-properties-non-strict.js | 1 +
 .../seal/symbol-object-contains-symbol-properties-strict.js     | 1 +
 test/built-ins/Object/symbol_object-returns-fresh-symbol.js     | 1 +
 .../Proxy/ownKeys/return-duplicate-symbol-entries-throws.js     | 1 +
 .../built-ins/Set/prototype/add/this-not-object-throw-symbol.js | 1 +
 .../Set/prototype/clear/this-not-object-throw-symbol.js         | 1 +
 .../Set/prototype/delete/this-not-object-throw-symbol.js        | 1 +
 .../Set/prototype/entries/this-not-object-throw-symbol.js       | 1 +
 .../Set/prototype/forEach/callback-not-callable-symbol.js       | 1 +
 .../Set/prototype/forEach/this-not-object-throw-symbol.js       | 1 +
 .../has/returns-false-when-value-not-present-symbol.js          | 1 +
 .../Set/prototype/has/returns-true-when-value-present-symbol.js | 1 +
 .../built-ins/Set/prototype/has/this-not-object-throw-symbol.js | 1 +
 .../size/returns-count-of-present-values-by-insertion.js        | 1 +
 .../size/returns-count-of-present-values-by-iterable.js         | 1 +
 .../Set/prototype/values/this-not-object-throw-symbol.js        | 1 +
 test/built-ins/Set/symbol-as-entry.js                           | 2 +-
 .../SharedArrayBuffer/newtarget-prototype-is-not-object.js      | 2 +-
 .../prototype/byteLength/this-is-not-object.js                  | 1 +
 .../SharedArrayBuffer/prototype/slice/context-is-not-object.js  | 1 +
 .../prototype/slice/species-constructor-is-not-object.js        | 1 +
 test/built-ins/Symbol/auto-boxing-non-strict.js                 | 1 +
 test/built-ins/Symbol/auto-boxing-strict.js                     | 1 +
 test/built-ins/Symbol/constructor.js                            | 1 +
 test/built-ins/Symbol/desc-to-string-symbol.js                  | 1 +
 test/built-ins/Symbol/desc-to-string.js                         | 1 +
 test/built-ins/Symbol/for/create-value.js                       | 1 +
 test/built-ins/Symbol/for/to-string-err.js                      | 1 +
 test/built-ins/Symbol/invoked-with-new.js                       | 1 +
 test/built-ins/Symbol/keyFor/arg-non-symbol.js                  | 1 +
 test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js        | 1 +
 test/built-ins/Symbol/prototype/intrinsic.js                    | 1 +
 .../toString/toString-default-attributes-non-strict.js          | 1 +
 .../prototype/toString/toString-default-attributes-strict.js    | 1 +
 test/built-ins/Symbol/prototype/toString/toString.js            | 1 +
 test/built-ins/Symbol/prototype/toString/undefined.js           | 1 +
 test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js  | 1 +
 test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js      | 1 +
 test/built-ins/Symbol/uniqueness.js                             | 1 +
 .../TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js   | 2 +-
 .../TypedArrays/buffer-arg-length-is-symbol-throws-sab.js       | 2 +-
 .../prototype/get/returns-undefined-key-is-not-object.js        | 1 +
 .../WeakSet/prototype/delete/this-not-object-throw-symbol.js    | 1 +
 test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js      | 2 +-
 test/harness/verifyProperty-desc-is-not-object.js               | 1 +
 test/harness/verifyProperty-restore-accessor-symbol.js          | 1 +
 test/harness/verifyProperty-restore-symbol.js                   | 1 +
 test/harness/verifyProperty-symbol-prop.js                      | 1 +
 test/language/computed-property-names/basics/symbol.js          | 1 +
 test/language/computed-property-names/class/method/symbol.js    | 1 +
 .../computed-property-names/class/static/method-symbol.js       | 1 +
 test/language/computed-property-names/object/method/symbol.js   | 1 +
 .../expressions/conditional/symbol-conditional-evaluation.js    | 1 +
 .../expressions/equals/symbol-abstract-equality-comparison.js   | 1 +
 .../expressions/equals/symbol-strict-equality-comparison.js     | 1 +
 .../expressions/logical-and/symbol-logical-and-evaluation.js    | 1 +
 .../expressions/logical-not/symbol-logical-not-evaluation.js    | 1 +
 .../expressions/logical-or/symbol-logical-or-evaluation.js      | 1 +
 test/language/expressions/object/computed-__proto__.js          | 1 +
 test/language/expressions/typeof/symbol.js                      | 1 +
 .../class/subclass/derived-class-return-override-with-symbol.js | 1 +
 100 files changed, 100 insertions(+), 16 deletions(-)

diff --git a/src/async-generators/yield-identifier-spread-non-strict.case b/src/async-generators/yield-identifier-spread-non-strict.case
index 0db9d527df..73ba0d813b 100644
--- a/src/async-generators/yield-identifier-spread-non-strict.case
+++ b/src/async-generators/yield-identifier-spread-non-strict.case
@@ -12,7 +12,7 @@ info: |
   PropertyDefinition[Yield]:
     (...)
     ...AssignmentExpression[In, ?Yield]
-features: [object-spread]
+features: [object-spread, Symbol]
 flags: [noStrict, async]
 ---*/
 
diff --git a/src/dstr-assignment-for-await/obj-rest-symbol-val.case b/src/dstr-assignment-for-await/obj-rest-symbol-val.case
index 4feed1a464..79d391edf7 100644
--- a/src/dstr-assignment-for-await/obj-rest-symbol-val.case
+++ b/src/dstr-assignment-for-await/obj-rest-symbol-val.case
@@ -6,7 +6,7 @@ desc: >
     RestBindingInitialization creates a new object if lhs is a Symbol
 template: default
 esid: pending
-features: [object-rest]
+features: [object-rest, Symbol]
 ---*/
 
 //- setup
diff --git a/src/dstr-assignment/array-empty-val-symbol.case b/src/dstr-assignment/array-empty-val-symbol.case
index 723fc7eed5..febb378b9c 100644
--- a/src/dstr-assignment/array-empty-val-symbol.case
+++ b/src/dstr-assignment/array-empty-val-symbol.case
@@ -7,6 +7,7 @@ desc: >
     iterable values and throws for Symbol values.
 template: error
 es6id: 12.14.5.2
+features: [Symbol]
 ---*/
 
 //- setup
diff --git a/src/dstr-assignment/obj-rest-symbol-val.case b/src/dstr-assignment/obj-rest-symbol-val.case
index a7a918f76c..4446de77c1 100644
--- a/src/dstr-assignment/obj-rest-symbol-val.case
+++ b/src/dstr-assignment/obj-rest-symbol-val.case
@@ -6,7 +6,7 @@ desc: >
     RestBindingInitialization creates a new object if lhs is a Symbol
 template: default
 esid: pending
-features: [object-rest]
+features: [Symbol, object-rest]
 ---*/
 
 //- setup
diff --git a/src/generators/yield-identifier-spread-non-strict.case b/src/generators/yield-identifier-spread-non-strict.case
index f4ad4f40b5..6659a5d4d7 100644
--- a/src/generators/yield-identifier-spread-non-strict.case
+++ b/src/generators/yield-identifier-spread-non-strict.case
@@ -12,7 +12,7 @@ info: |
   PropertyDefinition[Yield]:
     (...)
     ...AssignmentExpression[In, ?Yield]
-features: [object-spread]
+features: [Symbol, object-spread]
 flags: [noStrict]
 ---*/
 
diff --git a/src/spread/obj-spread-order.case b/src/spread/obj-spread-order.case
index 370a368079..b063476dd3 100644
--- a/src/spread/obj-spread-order.case
+++ b/src/spread/obj-spread-order.case
@@ -15,7 +15,7 @@ info: |
     3. ReturnIfAbrupt(fromValue).
     4. Let excludedNames be a new empty List.
     5. Return CopyDataProperties(object, fromValue, excludedNames).
-features: [object-spread]
+features: [Symbol, object-spread]
 ---*/
 
 //- setup
diff --git a/src/spread/obj-symbol-property.case b/src/spread/obj-symbol-property.case
index 4a2b4cd414..2f7bc5dd9f 100644
--- a/src/spread/obj-symbol-property.case
+++ b/src/spread/obj-symbol-property.case
@@ -14,7 +14,7 @@ info: |
     3. ReturnIfAbrupt(fromValue).
     4. Let excludedNames be a new empty List.
     5. Return CopyDataProperties(object, fromValue, excludedNames).
-features: [object-spread]
+features: [Symbol, object-spread]
 ---*/
 
 //- setup
diff --git a/src/spread/obj-with-overrides.case b/src/spread/obj-with-overrides.case
index d72af89871..654be7c995 100644
--- a/src/spread/obj-with-overrides.case
+++ b/src/spread/obj-with-overrides.case
@@ -14,7 +14,7 @@ info: |
     3. ReturnIfAbrupt(fromValue).
     4. Let excludedNames be a new empty List.
     5. Return CopyDataProperties(object, fromValue, excludedNames).
-features: [object-spread]
+features: [Symbol, object-spread]
 ---*/
 
 //- setup
diff --git a/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js b/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js
index 53558acc29..33641e8e52 100644
--- a/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js
+++ b/test/built-ins/Array/prototype/sort/comparefn-nonfunction-call-throws.js
@@ -12,6 +12,7 @@ info: >
   ...
   1. If _comparefn_ is not *undefined* and IsCallable(_comparefn_) is *false*, throw a *TypeError* exception.
   ...
+features: [Symbol]
 ---*/
 
 var sample = [1, 2, 3];
diff --git a/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js b/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js
index ad00e7d367..7049343427 100644
--- a/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js
+++ b/test/built-ins/ArrayBuffer/prototype/slice/species-constructor-is-not-object.js
@@ -21,6 +21,7 @@ info: >
     4. If C is undefined, return defaultConstructor.
     5. If Type(C) is not Object, throw a TypeError exception.
     ...
+features: [Symbol]
 ---*/
 
 var arrayBuffer = new ArrayBuffer(8);
diff --git a/test/built-ins/Boolean/symbol-coercion.js b/test/built-ins/Boolean/symbol-coercion.js
index a3bc31b6b9..d1cc5e6d4e 100644
--- a/test/built-ins/Boolean/symbol-coercion.js
+++ b/test/built-ins/Boolean/symbol-coercion.js
@@ -5,6 +5,7 @@ esid: sec-toboolean
 es6id: 7.1.2
 description: >
     Boolean coercion operations on Symbols
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js b/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js
index d87f83f0e9..7687a51af0 100644
--- a/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js
+++ b/test/built-ins/DataView/prototype/getInt32/return-abrupt-from-tonumber-byteoffset-symbol-sab.js
@@ -19,7 +19,7 @@ info: |
   ...
   4. Let numberIndex be ? ToNumber(requestIndex).
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var buffer = new SharedArrayBuffer(1);
diff --git a/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js b/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js
index 5e4c3c9ad9..8fa8e04e9d 100644
--- a/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js
+++ b/test/built-ins/DataView/prototype/getInt32/to-boolean-littleendian-sab.js
@@ -27,7 +27,7 @@ info: |
   ...
   8. If isLittleEndian is false, reverse the order of the elements of rawValue.
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var buffer = new SharedArrayBuffer(4);
diff --git a/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js b/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js
index 1e0aeaa208..a1ec74a45e 100644
--- a/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js
+++ b/test/built-ins/DataView/return-abrupt-tonumber-bytelength-symbol-sab.js
@@ -16,7 +16,7 @@ info: |
   11. Else,
     a. Let viewByteLength be ? ToLength(byteLength).
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var buffer = new SharedArrayBuffer(8);
diff --git a/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js b/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js
index c18eba8834..b4c7107d6e 100644
--- a/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js
+++ b/test/built-ins/DataView/return-abrupt-tonumber-byteoffset-symbol-sab.js
@@ -13,7 +13,7 @@ info: |
   ...
   4. Let numberOffset be ? ToNumber(byteOffset).
   ...
-features: [SharedArrayBuffer]
+features: [SharedArrayBuffer, Symbol]
 ---*/
 
 var s = Symbol("1");
diff --git a/test/built-ins/Function/prototype/bind/instance-name-non-string.js b/test/built-ins/Function/prototype/bind/instance-name-non-string.js
index b9b9aac26f..75383f8795 100644
--- a/test/built-ins/Function/prototype/bind/instance-name-non-string.js
+++ b/test/built-ins/Function/prototype/bind/instance-name-non-string.js
@@ -11,6 +11,7 @@ info: >
     14. If Type(targetName) is not String, let targetName be the empty string.
     15. Perform SetFunctionName(F, targetName, "bound").
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var target;
diff --git a/test/built-ins/Map/prototype/size/this-not-object-throw.js b/test/built-ins/Map/prototype/size/this-not-object-throw.js
index d55730db89..ec68cb9bdd 100644
--- a/test/built-ins/Map/prototype/size/this-not-object-throw.js
+++ b/test/built-ins/Map/prototype/size/this-not-object-throw.js
@@ -14,6 +14,7 @@ info: >
   ...
 
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var descriptor = Object.getOwnPropertyDescriptor(Map.prototype, 'size');
diff --git a/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js b/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js
index 282c3a5a25..3d0781cecc 100644
--- a/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js
+++ b/test/built-ins/Object/assign/Source-Number-Boolen-Symbol.js
@@ -5,6 +5,7 @@
 description: Number,Boolean,Symbol cannot have own enumerable properties,
              So cannot be Assigned.Here result should be original object.
 es6id:  19.1.2.1.5.c
+features: [Symbol]
 ---*/
 
 var target = new Object();
diff --git a/test/built-ins/Object/assign/Target-Symbol.js b/test/built-ins/Object/assign/Target-Symbol.js
index ef1335a425..2c24f4b504 100644
--- a/test/built-ins/Object/assign/Target-Symbol.js
+++ b/test/built-ins/Object/assign/Target-Symbol.js
@@ -5,6 +5,7 @@
 description: Test the first argument(target) of Object.Assign(target,...sources),
              if target is Symbol,the return value should be a new Symbol object whose [[SymbolData]] value is target.
 es6id:  19.1.2.1.1
+features: [Symbol]
 ---*/
 
 var target = Symbol('foo');
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js b/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js
index 4232d55669..36dc262400 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-configurable.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.4
 description: >
     Symbol used as property for configurable data property definition
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js b/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js
index c39f9e2791..a54deb3a95 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-default-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.4
 description: >
     Symbol used as property for property definition
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js b/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js
index dd597cda7e..93cffc023f 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-default-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.4
 description: >
     Symbol used as property for default data property definition
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/defineProperty/symbol-data-property-writable.js b/test/built-ins/Object/defineProperty/symbol-data-property-writable.js
index 004e47ef54..b2d3a873af 100644
--- a/test/built-ins/Object/defineProperty/symbol-data-property-writable.js
+++ b/test/built-ins/Object/defineProperty/symbol-data-property-writable.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.4
 description: >
     Symbol used as property for writable data property definition
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js
index a322a6abcd..6af3bf0947 100644
--- a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js
+++ b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.5
 description: >
     Frozen object contains symbol properties.
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol();
 var obj = {};
diff --git a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js
index 9cc20f8cfc..9b93997cbb 100644
--- a/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js
+++ b/test/built-ins/Object/freeze/frozen-object-contains-symbol-properties-strict.js
@@ -5,6 +5,7 @@ es6id: 19.1.2.5
 description: >
     Frozen object contains symbol properties.
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var sym = Symbol("66");
 var obj = {};
diff --git a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js
index a9a880a2c4..96102bf168 100644
--- a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js
+++ b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.8
 description: >
     Object.getOwnPropertySymbols returns all symbol properties that have descriptions
+features: [Symbol]
 ---*/
 
 var sym = Symbol("description");
diff --git a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js
index db73cd72fa..26a288b034 100644
--- a/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js
+++ b/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js
@@ -4,6 +4,7 @@
 es6id: 19.1.2.8
 description: >
     Object.getOwnPropertySymbols returns all symbol properties that do not have descriptions
+features: [Symbol]
 ---*/
 
 var sym = Symbol();
diff --git a/test/built-ins/Object/is/not-same-value-x-y-symbol.js b/test/built-ins/Object/is/not-same-value-x-y-symbol.js
index 4f17e77a8d..28ccc0a78e 100644
--- a/test/built-ins/Object/is/not-same-value-x-y-symbol.js
+++ b/test/built-ins/Object/is/not-same-value-x-y-symbol.js
@@ -10,6 +10,7 @@ description: >
       a. If x and y are both the same Symbol value, 
           return true; otherwise, return false.
     ...
+features: [Symbol]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Object/is/same-value-x-y-symbol.js b/test/built-ins/Object/is/same-value-x-y-symbol.js
index 9e6b206f73..05153d0761 100644
--- a/test/built-ins/Object/is/same-value-x-y-symbol.js
+++ b/test/built-ins/Object/is/same-value-x-y-symbol.js
@@ -10,6 +10,7 @@ description: >
       a. If x and y are both the same Symbol value, 
           return true; otherwise, return false.
     ...
+features: [Symbol]
 ---*/
 
 var a = Symbol();
diff --git a/test/built-ins/Object/is/symbol-object-is-same-value.js b/test/built-ins/Object/is/symbol-object-is-same-value.js
index 8f81eb4314..b4d5a13843 100644
--- a/test/built-ins/Object/is/symbol-object-is-same-value.js
+++ b/test/built-ins/Object/is/symbol-object-is-same-value.js
@@ -4,6 +4,7 @@
 es6id: 7.2.
 description: >
     Object.is/SameValue: Symbol
+features: [Symbol]
 ---*/
 var symA = Symbol('66');
 var symB = Symbol('66');
diff --git a/test/built-ins/Object/keys/proxy-keys.js b/test/built-ins/Object/keys/proxy-keys.js
index 69da52ddaa..ac349430fa 100644
--- a/test/built-ins/Object/keys/proxy-keys.js
+++ b/test/built-ins/Object/keys/proxy-keys.js
@@ -21,6 +21,7 @@ info: |
     a. If Type(key) is String, then
       i. Let desc be ? O.[[GetOwnProperty]](key).
       ...
+features: [Symbol]
 ---*/
 
 let log = [];
diff --git a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js
index 9617575ad9..a8625fd1b1 100644
--- a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js
+++ b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.preventExtensions(obj) where obj contains symbol properties.
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js
index 01cfb4b6be..6bb4bdf187 100644
--- a/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js
+++ b/test/built-ins/Object/preventExtensions/symbol-object-contains-symbol-properties-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.preventExtensions(obj) where obj contains symbol properties.
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js b/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js
index f69cc1beb5..d52ed32987 100644
--- a/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js
+++ b/test/built-ins/Object/prototype/hasOwnProperty/symbol_own_property.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.2
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js
index 0f52fb72f3..1e0fcc8926 100644
--- a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js
+++ b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_toString.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.2
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js
index 772fa4f15d..2827923f0b 100644
--- a/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js
+++ b/test/built-ins/Object/prototype/hasOwnProperty/symbol_property_valueOf.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.2
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js
index 201f951b1a..5a396dd35d 100644
--- a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js
+++ b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_own_property.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.4
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js
index 945f5d1f31..120b290f05 100644
--- a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js
+++ b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_toString.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.4
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js
index 89397e7e3c..520155c208 100644
--- a/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js
+++ b/test/built-ins/Object/prototype/propertyIsEnumerable/symbol_property_valueOf.js
@@ -10,6 +10,7 @@ info: >
   2. ReturnIfAbrupt(P).
   ...
 es6id: 19.1.3.4
+features: [Symbol]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js
index dcb68e35f2..831deb3d57 100644
--- a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js
+++ b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.seal(obj) where obj contains symbol properties.
 flags: [noStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js
index d0c59884a4..0c04b43169 100644
--- a/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js
+++ b/test/built-ins/Object/seal/symbol-object-contains-symbol-properties-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Object.seal(obj) where obj contains symbol properties.
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 var symA = Symbol("A");
 var symB = Symbol("B");
diff --git a/test/built-ins/Object/symbol_object-returns-fresh-symbol.js b/test/built-ins/Object/symbol_object-returns-fresh-symbol.js
index c4aa3cf022..453156c565 100644
--- a/test/built-ins/Object/symbol_object-returns-fresh-symbol.js
+++ b/test/built-ins/Object/symbol_object-returns-fresh-symbol.js
@@ -4,6 +4,7 @@
 es6id: 19.1.1.1_S3
 description: >
     Object(sym) returns a fresh Symbol object
+features: [Symbol]
 ---*/
 var symA = Symbol('A');
 var symB = Symbol();
diff --git a/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js b/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js
index dfe27205c0..53194a058d 100644
--- a/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js
+++ b/test/built-ins/Proxy/ownKeys/return-duplicate-symbol-entries-throws.js
@@ -9,6 +9,7 @@ info: >
 
     ...
     9. If trapResult contains any duplicate entries, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 var s = Symbol();
diff --git a/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js
index 759147e15f..ade8dfc7a2 100644
--- a/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/add/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js
index 6730e5be39..2525d91091 100644
--- a/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/clear/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js
index de3f319c05..1435297974 100644
--- a/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/delete/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js
index f727279c46..e006726c77 100644
--- a/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/entries/this-not-object-throw-symbol.js
@@ -13,6 +13,7 @@ description: >
 
     1. If Type(set) is not Object, throw a TypeError exception.
     ...
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js b/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js
index 789b3e067e..d715ea6e29 100644
--- a/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js
+++ b/test/built-ins/Set/prototype/forEach/callback-not-callable-symbol.js
@@ -11,6 +11,7 @@ description: >
 
     Passing `symbol` as callback
 
+features: [Symbol]
 ---*/
 
 var s = new Set([1]);
diff --git a/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js
index c2e0b8645d..01441e8cff 100644
--- a/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/forEach/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js b/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js
index 64ae5c7d96..04b5ac0c11 100644
--- a/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js
+++ b/test/built-ins/Set/prototype/has/returns-false-when-value-not-present-symbol.js
@@ -8,6 +8,7 @@ description: >
     ...
     6. Return false.
 
+features: [Symbol]
 ---*/
 
 var s = new Set();
diff --git a/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js b/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js
index 7620fec78e..3a47d9ca36 100644
--- a/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js
+++ b/test/built-ins/Set/prototype/has/returns-true-when-value-present-symbol.js
@@ -10,6 +10,7 @@ description: >
       a. If e is not empty and SameValueZero(e, value) is true, return true.
     ...
 
+features: [Symbol]
 ---*/
 
 var s = new Set();
diff --git a/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js
index c64343df83..46a76eb993 100644
--- a/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/has/this-not-object-throw-symbol.js
@@ -8,6 +8,7 @@ description: >
     1. Let S be the this value.
     2. If Type(S) is not Object, throw a TypeError exception.
 
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js
index 9ab0554651..096ed5e738 100644
--- a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js
+++ b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-insertion.js
@@ -9,6 +9,7 @@ description: >
     6. For each e that is an element of entries
       a. If e is not empty, set count to count+1.
 
+features: [Symbol]
 ---*/
 
 var s = new Set();
diff --git a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js
index 7243d04731..d7cc5a8a9c 100644
--- a/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js
+++ b/test/built-ins/Set/prototype/size/returns-count-of-present-values-by-iterable.js
@@ -9,6 +9,7 @@ description: >
     6. For each e that is an element of entries
       a. If e is not empty, set count to count+1.
 
+features: [Symbol]
 ---*/
 
 var s = new Set([0, undefined, false, NaN, null, "", Symbol()]);
diff --git a/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js b/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js
index 19eb80a487..549fa1f1fc 100644
--- a/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js
+++ b/test/built-ins/Set/prototype/values/this-not-object-throw-symbol.js
@@ -13,6 +13,7 @@ description: >
 
     1. If Type(set) is not Object, throw a TypeError exception.
     ...
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Set/symbol-as-entry.js b/test/built-ins/Set/symbol-as-entry.js
index f60743a312..2a53834720 100644
--- a/test/built-ins/Set/symbol-as-entry.js
+++ b/test/built-ins/Set/symbol-as-entry.js
@@ -4,7 +4,7 @@
 es6id: 19.4
 description: >
     Symbol as Set entry
-features: [Set]
+features: [Symbol, Set]
 ---*/
 var set = new Set();
 var sym = Symbol();
diff --git a/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js b/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js
index 802b1787cb..0dc598dfe3 100644
--- a/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/newtarget-prototype-is-not-object.js
@@ -18,7 +18,7 @@ info: >
     1. Let obj be ? OrdinaryCreateFromConstructor(constructor, "%SharedArrayBufferPrototype%",
        «[[ArrayBufferData]], [[ArrayBufferByteLength]]» ).
     ...
-features: [Reflect.construct]
+features: [Symbol, Reflect.construct]
 ---*/
 
 function newTarget() { }
diff --git a/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js b/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js
index 79e857b75f..4cc423002e 100644
--- a/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/prototype/byteLength/this-is-not-object.js
@@ -3,6 +3,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: Throws a TypeError exception when `this` is not Object
+features: [Symbol]
 ---*/
 
 var getter = Object.getOwnPropertyDescriptor(
diff --git a/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js b/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js
index ce054180b7..95b7ee53cf 100644
--- a/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/prototype/slice/context-is-not-object.js
@@ -7,6 +7,7 @@ description: >
   Throws a TypeError if `this` is not an Object.
 info: >
   SharedArrayBuffer.prototype.slice ( start, end )
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js b/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js
index 86212bc65b..7920c804a3 100644
--- a/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js
+++ b/test/built-ins/SharedArrayBuffer/prototype/slice/species-constructor-is-not-object.js
@@ -8,6 +8,7 @@ description: >
 info: >
   SharedArrayBuffer.prototype.slice ( start, end )
 
+features: [Symbol]
 ---*/
 
 var arrayBuffer = new SharedArrayBuffer(8);
diff --git a/test/built-ins/Symbol/auto-boxing-non-strict.js b/test/built-ins/Symbol/auto-boxing-non-strict.js
index 459bc75d26..9ba613193a 100644
--- a/test/built-ins/Symbol/auto-boxing-non-strict.js
+++ b/test/built-ins/Symbol/auto-boxing-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol ToObject auto-boxing
 flags: [noStrict]
+features: [Symbol]
 ---*/
 
 var sym = Symbol('66');
diff --git a/test/built-ins/Symbol/auto-boxing-strict.js b/test/built-ins/Symbol/auto-boxing-strict.js
index 0d18c53603..02d4c6614d 100644
--- a/test/built-ins/Symbol/auto-boxing-strict.js
+++ b/test/built-ins/Symbol/auto-boxing-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol ToObject auto-boxing
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Symbol/constructor.js b/test/built-ins/Symbol/constructor.js
index cae673b1ab..e62f06c8fd 100644
--- a/test/built-ins/Symbol/constructor.js
+++ b/test/built-ins/Symbol/constructor.js
@@ -4,6 +4,7 @@
 es6id: 19.4.3.1
 description: >
     Symbol constructor
+features: [Symbol]
 ---*/
 assert.sameValue(
     Object.getPrototypeOf(Symbol('66')).constructor,
diff --git a/test/built-ins/Symbol/desc-to-string-symbol.js b/test/built-ins/Symbol/desc-to-string-symbol.js
index e4b6d2954e..e9aaa69b74 100644
--- a/test/built-ins/Symbol/desc-to-string-symbol.js
+++ b/test/built-ins/Symbol/desc-to-string-symbol.js
@@ -10,6 +10,7 @@ info: |
     2. Else, let descString be ? ToString(description).
     3. Return a new unique Symbol value whose [[Description]] value is
        descString.
+features: [Symbol]
 ---*/
 
 var s = Symbol('1');
diff --git a/test/built-ins/Symbol/desc-to-string.js b/test/built-ins/Symbol/desc-to-string.js
index b79f76eda6..aa6e885b84 100644
--- a/test/built-ins/Symbol/desc-to-string.js
+++ b/test/built-ins/Symbol/desc-to-string.js
@@ -10,6 +10,7 @@ info: |
     2. Else, let descString be ? ToString(description).
     3. Return a new unique Symbol value whose [[Description]] value is
        descString.
+features: [Symbol]
 ---*/
 
 var calls, val;
diff --git a/test/built-ins/Symbol/for/create-value.js b/test/built-ins/Symbol/for/create-value.js
index b5ceaeacb9..dc1aee35b5 100644
--- a/test/built-ins/Symbol/for/create-value.js
+++ b/test/built-ins/Symbol/for/create-value.js
@@ -15,6 +15,7 @@ info: >
     5. Append the Record { [[Key]]: stringKey, [[Symbol]]: newSymbol } to the
        GlobalSymbolRegistry List.
     6. Return newSymbol. 
+features: [Symbol]
 ---*/
 
 var canonical = Symbol.for('s');
diff --git a/test/built-ins/Symbol/for/to-string-err.js b/test/built-ins/Symbol/for/to-string-err.js
index 77348fbd45..22689a8468 100644
--- a/test/built-ins/Symbol/for/to-string-err.js
+++ b/test/built-ins/Symbol/for/to-string-err.js
@@ -6,6 +6,7 @@ es6id: 19.4.2.1
 description: Error resulting from string coercion of first argument
 info: >
     1. Let stringKey be ? ToString(key).
+features: [Symbol]
 ---*/
 
 var subject = {
diff --git a/test/built-ins/Symbol/invoked-with-new.js b/test/built-ins/Symbol/invoked-with-new.js
index c4274b013e..a3158cc68f 100644
--- a/test/built-ins/Symbol/invoked-with-new.js
+++ b/test/built-ins/Symbol/invoked-with-new.js
@@ -6,6 +6,7 @@ es6id: 19.4.1
 description: The Symbol constructor may not be invoked with `new`
 info: |
     1. If NewTarget is not undefined, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Symbol/keyFor/arg-non-symbol.js b/test/built-ins/Symbol/keyFor/arg-non-symbol.js
index 2042cfa6f1..4c3820e6f3 100644
--- a/test/built-ins/Symbol/keyFor/arg-non-symbol.js
+++ b/test/built-ins/Symbol/keyFor/arg-non-symbol.js
@@ -6,6 +6,7 @@ es6id: 19.4.2.5
 description: Called with a non-symbol argument
 info: >
     1. If Type(sym) is not Symbol, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 assert.sameValue(typeof Symbol.keyFor, 'function');
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 86bf657a8f..2f70c632a8 100644
--- a/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
+++ b/test/built-ins/Symbol/keyFor/arg-symbol-registry-miss.js
@@ -12,6 +12,7 @@ info: >
     3. Assert: GlobalSymbolRegistry does not currently contain an entry for
        sym.
     4. Return undefined. 
+features: [Symbol]
 ---*/
 
 var constructed = Symbol('Symbol.iterator');
diff --git a/test/built-ins/Symbol/prototype/intrinsic.js b/test/built-ins/Symbol/prototype/intrinsic.js
index e51bafffaa..2059f7b84e 100644
--- a/test/built-ins/Symbol/prototype/intrinsic.js
+++ b/test/built-ins/Symbol/prototype/intrinsic.js
@@ -4,6 +4,7 @@
 es6id: 19.4.3
 description: >
     Symbol prototype
+features: [Symbol]
 ---*/
 assert.sameValue(
     Object.getPrototypeOf(Symbol('66')),
diff --git a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js
index 5fdb58e5b1..a37568c43b 100644
--- a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js
+++ b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-non-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol property get and set, non-strict
 flags: [noStrict]
+features: [Symbol]
 ---*/
 
 var sym = Symbol('66');
diff --git a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js
index 96df7a9346..188712f548 100644
--- a/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js
+++ b/test/built-ins/Symbol/prototype/toString/toString-default-attributes-strict.js
@@ -5,6 +5,7 @@ es6id: 19.4
 description: >
     Symbol property get and set, strict
 flags: [onlyStrict]
+features: [Symbol]
 ---*/
 
 var sym = Symbol("66");
diff --git a/test/built-ins/Symbol/prototype/toString/toString.js b/test/built-ins/Symbol/prototype/toString/toString.js
index 1a6541981b..f771cb1e1c 100644
--- a/test/built-ins/Symbol/prototype/toString/toString.js
+++ b/test/built-ins/Symbol/prototype/toString/toString.js
@@ -4,6 +4,7 @@
 es6id: 19.4.3.2
 description: >
     toString operations on Symbols
+features: [Symbol]
 ---*/
 assert.sameValue(
   String(Symbol('66')),
diff --git a/test/built-ins/Symbol/prototype/toString/undefined.js b/test/built-ins/Symbol/prototype/toString/undefined.js
index 7d6baad469..c2b2bc7434 100644
--- a/test/built-ins/Symbol/prototype/toString/undefined.js
+++ b/test/built-ins/Symbol/prototype/toString/undefined.js
@@ -18,6 +18,7 @@ info: |
     3. If desc is undefined, let desc be the empty string.
     4. Assert: Type(desc) is String.
     5. Return the result of concatenating the strings "Symbol(", desc, and ")".
+features: [Symbol]
 ---*/
 
 assert.sameValue(Symbol().toString(), 'Symbol()', 'implicit value');
diff --git a/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js b/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js
index c34b6bbdd3..965b6e5ab5 100644
--- a/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js
+++ b/test/built-ins/Symbol/prototype/valueOf/this-val-obj-symbol.js
@@ -10,6 +10,7 @@ info: |
   3. If Type(s) is not Object, throw a TypeError exception.
   4. If s does not have a [[SymbolData]] internal slot, throw a TypeError exception.
   5. Return the value of s's [[SymbolData]] internal slot. 
+features: [Symbol]
 ---*/
 
 var valueOf = Symbol.prototype.valueOf;
diff --git a/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js b/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js
index 395ba5b48c..9fd0a94b4a 100644
--- a/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js
+++ b/test/built-ins/Symbol/prototype/valueOf/this-val-symbol.js
@@ -7,6 +7,7 @@ description: Called on a Symbol value
 info: |
   1. Let s be the this value.
   2. If Type(s) is Symbol, return s.
+features: [Symbol]
 ---*/
 
 var valueOf = Symbol.prototype.valueOf;
diff --git a/test/built-ins/Symbol/uniqueness.js b/test/built-ins/Symbol/uniqueness.js
index 02efc89f1a..bfca22f6b4 100644
--- a/test/built-ins/Symbol/uniqueness.js
+++ b/test/built-ins/Symbol/uniqueness.js
@@ -10,6 +10,7 @@ info: |
     2. Else, let descString be ? ToString(description).
     3. Return a new unique Symbol value whose [[Description]] value is
        descString.
+features: [Symbol]
 ---*/
 
 assert.notSameValue(Symbol(''), Symbol(''), 'empty string');
diff --git a/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js b/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js
index 416e5db7d1..2b9d976bf1 100644
--- a/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js
+++ b/test/built-ins/TypedArrays/buffer-arg-byteoffset-is-symbol-throws-sab.js
@@ -16,7 +16,7 @@ info: >
   7. Let offset be ? ToInteger(byteOffset).
   ...
 includes: [testTypedArray.js]
-features: [SharedArrayBuffer]
+features: [Symbol, SharedArrayBuffer]
 ---*/
 
 var byteOffset = Symbol("1");
diff --git a/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js b/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js
index 0ae03e4e9e..237aaf62af 100644
--- a/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js
+++ b/test/built-ins/TypedArrays/buffer-arg-length-is-symbol-throws-sab.js
@@ -17,7 +17,7 @@ info: >
     a. Let newLength be ? ToLength(length).
   ...
 includes: [testTypedArray.js]
-features: [SharedArrayBuffer]
+features: [Symbol, SharedArrayBuffer]
 ---*/
 
 var buffer = new SharedArrayBuffer(8);
diff --git a/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js b/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js
index bfe4097f0f..6363ef5105 100644
--- a/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js
+++ b/test/built-ins/WeakMap/prototype/get/returns-undefined-key-is-not-object.js
@@ -13,6 +13,7 @@ info: >
   slot.
   5. If Type(key) is not Object, return undefined.
   ...
+features: [Symbol]
 ---*/
 
 var map = new WeakMap();
diff --git a/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js b/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js
index 8624f6dd0d..6599ec870e 100644
--- a/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js
+++ b/test/built-ins/WeakSet/prototype/delete/this-not-object-throw-symbol.js
@@ -9,6 +9,7 @@ info: >
 
   1. Let S be the this value.
   2. If Type(S) is not Object, throw a TypeError exception.
+features: [Symbol]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js b/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js
index 1c25f5f3b5..c74175745a 100644
--- a/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js
+++ b/test/built-ins/WeakSet/symbol-disallowed-as-weakset-key.js
@@ -5,7 +5,7 @@ es6id: 23.4.3.1_S2
 esid: sec-weakset.prototype.add
 description: >
   Symbol may not be used as a WeakSet entry
-features: [WeakSet]
+features: [Symbol, WeakSet]
 ---*/
 var weakset = new WeakSet();
 var sym = Symbol();
diff --git a/test/harness/verifyProperty-desc-is-not-object.js b/test/harness/verifyProperty-desc-is-not-object.js
index 418c2893f5..d269d6737d 100644
--- a/test/harness/verifyProperty-desc-is-not-object.js
+++ b/test/harness/verifyProperty-desc-is-not-object.js
@@ -5,6 +5,7 @@
 description: >
   The desc argument should be an object or undefined
 includes: [propertyHelper.js,sta.js]
+features: [Symbol]
 ---*/
 var sample = { foo: 42 };
 
diff --git a/test/harness/verifyProperty-restore-accessor-symbol.js b/test/harness/verifyProperty-restore-accessor-symbol.js
index 77d726d542..d560fe9fb7 100644
--- a/test/harness/verifyProperty-restore-accessor-symbol.js
+++ b/test/harness/verifyProperty-restore-accessor-symbol.js
@@ -5,6 +5,7 @@
 description: >
   verifyProperty allows restoring the original accessor descriptor
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/harness/verifyProperty-restore-symbol.js b/test/harness/verifyProperty-restore-symbol.js
index a407412e56..37953bb144 100644
--- a/test/harness/verifyProperty-restore-symbol.js
+++ b/test/harness/verifyProperty-restore-symbol.js
@@ -5,6 +5,7 @@
 description: >
   verifyProperty allows restoring the original descriptor
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/harness/verifyProperty-symbol-prop.js b/test/harness/verifyProperty-symbol-prop.js
index 3a59108d8d..f16c42e30a 100644
--- a/test/harness/verifyProperty-symbol-prop.js
+++ b/test/harness/verifyProperty-symbol-prop.js
@@ -5,6 +5,7 @@
 description: >
   Verify symbol named property descriptor
 includes: [propertyHelper.js]
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/language/computed-property-names/basics/symbol.js b/test/language/computed-property-names/basics/symbol.js
index 60e4784872..c8d54547a4 100644
--- a/test/language/computed-property-names/basics/symbol.js
+++ b/test/language/computed-property-names/basics/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     computed property names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 
 function ID(x) {
diff --git a/test/language/computed-property-names/class/method/symbol.js b/test/language/computed-property-names/class/method/symbol.js
index c7425fcb6a..bec9976f18 100644
--- a/test/language/computed-property-names/class/method/symbol.js
+++ b/test/language/computed-property-names/class/method/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     computed property class method names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 
 function ID(x) {
diff --git a/test/language/computed-property-names/class/static/method-symbol.js b/test/language/computed-property-names/class/static/method-symbol.js
index 31012afeb8..7d6506dcaf 100644
--- a/test/language/computed-property-names/class/static/method-symbol.js
+++ b/test/language/computed-property-names/class/static/method-symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     In a class, static computed property method names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 var sym1 = Symbol();
 var sym2 = Symbol();
diff --git a/test/language/computed-property-names/object/method/symbol.js b/test/language/computed-property-names/object/method/symbol.js
index 3c76e856be..21ef99efa3 100644
--- a/test/language/computed-property-names/object/method/symbol.js
+++ b/test/language/computed-property-names/object/method/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.2.5
 description: >
     computed property method names can be a symbol
 includes: [compareArray.js]
+features: [Symbol]
 ---*/
 
 function ID(x) {
diff --git a/test/language/expressions/conditional/symbol-conditional-evaluation.js b/test/language/expressions/conditional/symbol-conditional-evaluation.js
index db3add4e3c..b1fb4e696f 100644
--- a/test/language/expressions/conditional/symbol-conditional-evaluation.js
+++ b/test/language/expressions/conditional/symbol-conditional-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.12.3
 description: >
     Conditional Symbol evaluation
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/equals/symbol-abstract-equality-comparison.js b/test/language/expressions/equals/symbol-abstract-equality-comparison.js
index 7ca1e0f71a..904c4abe4d 100644
--- a/test/language/expressions/equals/symbol-abstract-equality-comparison.js
+++ b/test/language/expressions/equals/symbol-abstract-equality-comparison.js
@@ -4,6 +4,7 @@
 es6id: 7.2.12
 description: >
     Abstract Equality Comparison: Symbol
+features: [Symbol]
 ---*/
 var symA = Symbol('66');
 var symB = Symbol('66');
diff --git a/test/language/expressions/equals/symbol-strict-equality-comparison.js b/test/language/expressions/equals/symbol-strict-equality-comparison.js
index d77c83ca33..361009b834 100644
--- a/test/language/expressions/equals/symbol-strict-equality-comparison.js
+++ b/test/language/expressions/equals/symbol-strict-equality-comparison.js
@@ -4,6 +4,7 @@
 es6id: 7.2.13
 description: >
     Strict Equality Comparison: Symbol
+features: [Symbol]
 ---*/
 var symA = Symbol('66');
 var symB = Symbol('66');
diff --git a/test/language/expressions/logical-and/symbol-logical-and-evaluation.js b/test/language/expressions/logical-and/symbol-logical-and-evaluation.js
index 689ba7d77f..3c2c5a7b7b 100644
--- a/test/language/expressions/logical-and/symbol-logical-and-evaluation.js
+++ b/test/language/expressions/logical-and/symbol-logical-and-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.12.3
 description: >
     "Logical AND" Symbol evaluation
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/logical-not/symbol-logical-not-evaluation.js b/test/language/expressions/logical-not/symbol-logical-not-evaluation.js
index c161525307..6fe19e1165 100644
--- a/test/language/expressions/logical-not/symbol-logical-not-evaluation.js
+++ b/test/language/expressions/logical-not/symbol-logical-not-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.5.12.1
 description: >
     "Logical Not" coercion operation on Symbols
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/logical-or/symbol-logical-or-evaluation.js b/test/language/expressions/logical-or/symbol-logical-or-evaluation.js
index 7d3a1be683..905a67c807 100644
--- a/test/language/expressions/logical-or/symbol-logical-or-evaluation.js
+++ b/test/language/expressions/logical-or/symbol-logical-or-evaluation.js
@@ -4,6 +4,7 @@
 es6id: 12.12.3
 description: >
     "Logical OR" Symbol evaluation
+features: [Symbol]
 ---*/
 var sym = Symbol();
 
diff --git a/test/language/expressions/object/computed-__proto__.js b/test/language/expressions/object/computed-__proto__.js
index a4040ed31d..9287265631 100644
--- a/test/language/expressions/object/computed-__proto__.js
+++ b/test/language/expressions/object/computed-__proto__.js
@@ -25,6 +25,7 @@ info: |
     a. If Type(propValue) is either Object or Null, then
         i. Return object.[[SetPrototypeOf]](propValue).
     b. Return NormalCompletion(empty).
+features: [Symbol]
 ---*/
 
 var obj;
diff --git a/test/language/expressions/typeof/symbol.js b/test/language/expressions/typeof/symbol.js
index 10440b4c04..93e8a1ca9a 100644
--- a/test/language/expressions/typeof/symbol.js
+++ b/test/language/expressions/typeof/symbol.js
@@ -5,6 +5,7 @@ es6id: 12.5.6.1
 description: >
     typeof Symbol() returns 'symbol'.
     typeof Object(Symbol()) returns 'object'.
+features: [Symbol]
 ---*/
 assert.sameValue(typeof Symbol('A'), 'symbol', "`typeof Symbol('A')` is `'symbol'`");
 assert.sameValue(typeof Symbol(), 'symbol', "`typeof Symbol()` is `'symbol'`");
diff --git a/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js b/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js
index d318964822..009a88c1ab 100644
--- a/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js
+++ b/test/language/statements/class/subclass/derived-class-return-override-with-symbol.js
@@ -13,6 +13,7 @@ description: >
 
     `return Symbol();`
 
+features: [Symbol]
 ---*/
 class Base {
   constructor() {}
-- 
GitLab