From 041da54c02ae7d17edb8c134ab7691c4f643bafe Mon Sep 17 00:00:00 2001
From: Michael Ficarra <mficarra@shapesecurity.com>
Date: Fri, 5 Jan 2018 11:55:19 -0800
Subject: [PATCH] add flatten/flatMap to features.txt and mark appropriate
 tests

---
 features.txt                                                 | 5 +++++
 test/built-ins/Array/prototype/flatMap/array-like-objects.js | 1 +
 .../Array/prototype/flatMap/bound-function-argument.js       | 1 +
 test/built-ins/Array/prototype/flatMap/depth-always-one.js   | 1 +
 test/built-ins/Array/prototype/flatMap/length.js             | 1 +
 test/built-ins/Array/prototype/flatMap/name.js               | 1 +
 .../Array/prototype/flatMap/non-callable-argument-throws.js  | 1 +
 .../Array/prototype/flatMap/non-object-ctor-throws.js        | 1 +
 .../Array/prototype/flatMap/null-undefined-input-throws.js   | 1 +
 test/built-ins/Array/prototype/flatMap/thisArg-argument.js   | 1 +
 test/built-ins/Array/prototype/flatten/array-like-objects.js | 1 +
 .../built-ins/Array/prototype/flatten/bound-function-call.js | 1 +
 .../Array/prototype/flatten/empty-array-elements.js          | 1 +
 .../Array/prototype/flatten/empty-object-elements.js         | 1 +
 test/built-ins/Array/prototype/flatten/length.js             | 1 +
 test/built-ins/Array/prototype/flatten/name.js               | 1 +
 .../prototype/flatten/non-numeric-depth-should-not-throw.js  | 1 +
 .../Array/prototype/flatten/non-object-ctor-throws.js        | 1 +
 .../Array/prototype/flatten/null-undefined-elements.js       | 2 ++
 .../Array/prototype/flatten/null-undefined-input-throws.js   | 1 +
 test/built-ins/Array/prototype/flatten/positive-infinity.js  | 1 +
 test/built-ins/Array/prototype/flatten/prop-desc.js          | 1 +
 .../flatten/symbol-object-create-null-depth-throws.js        | 1 +
 23 files changed, 28 insertions(+)

diff --git a/features.txt b/features.txt
index 9d19bfaa24..39092a57bf 100644
--- a/features.txt
+++ b/features.txt
@@ -55,6 +55,11 @@ regexp-unicode-property-escapes
 Atomics
 SharedArrayBuffer
 
+# Array.prototype.flatten and Array.prototype.flatMap
+# https://github.com/tc39/proposal-flatMap
+Array.prototype.flatten
+Array.prototype.flatMap
+
 # Standard language features
 #
 # Language features that have been included in a published version of the
diff --git a/test/built-ins/Array/prototype/flatMap/array-like-objects.js b/test/built-ins/Array/prototype/flatMap/array-like-objects.js
index 0e057a952a..a9512ff35f 100644
--- a/test/built-ins/Array/prototype/flatMap/array-like-objects.js
+++ b/test/built-ins/Array/prototype/flatMap/array-like-objects.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatMap
 description: >
     array-like objects can be flattened
 includes: [compareArray.js]
+features: [Array.prototype.flatMap]
 ---*/
 
 function getArgumentsObject() {
diff --git a/test/built-ins/Array/prototype/flatMap/bound-function-argument.js b/test/built-ins/Array/prototype/flatMap/bound-function-argument.js
index 093e9599d4..95f5aeffe7 100644
--- a/test/built-ins/Array/prototype/flatMap/bound-function-argument.js
+++ b/test/built-ins/Array/prototype/flatMap/bound-function-argument.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatMap
 description: >
     Behavior when given a bound function
 includes: [compareArray.js]
+features: [Array.prototype.flatMap]
 ---*/
 
 var a = [0, 0];
diff --git a/test/built-ins/Array/prototype/flatMap/depth-always-one.js b/test/built-ins/Array/prototype/flatMap/depth-always-one.js
index 37caee8574..a31e0a1a56 100644
--- a/test/built-ins/Array/prototype/flatMap/depth-always-one.js
+++ b/test/built-ins/Array/prototype/flatMap/depth-always-one.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatMap
 description: >
     Behavior when array is depth more than 1
 includes: [compareArray.js]
+features: [Array.prototype.flatMap]
 ---*/
 
 assert.compareArray([1, 2].flatMap(function(e) {
diff --git a/test/built-ins/Array/prototype/flatMap/length.js b/test/built-ins/Array/prototype/flatMap/length.js
index 1f16e513a8..4ef59290bd 100644
--- a/test/built-ins/Array/prototype/flatMap/length.js
+++ b/test/built-ins/Array/prototype/flatMap/length.js
@@ -6,6 +6,7 @@ description: Array.prototype.flatMap.length value and descriptor.
 info: >
   17 ECMAScript Standard Built-in Objects
 includes: [propertyHelper.js]
+features: [Array.prototype.flatMap]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Array/prototype/flatMap/name.js b/test/built-ins/Array/prototype/flatMap/name.js
index 326e5173c8..53deaa1e56 100644
--- a/test/built-ins/Array/prototype/flatMap/name.js
+++ b/test/built-ins/Array/prototype/flatMap/name.js
@@ -6,6 +6,7 @@ description: Array.prototype.flatmap name value and descriptor.
 info: >
   17 ECMAScript Standard Built-in Objects
 includes: [propertyHelper.js]
+features: [Array.prototype.flatMap]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Array/prototype/flatMap/non-callable-argument-throws.js b/test/built-ins/Array/prototype/flatMap/non-callable-argument-throws.js
index 4795e3b6e4..6d47d02335 100644
--- a/test/built-ins/Array/prototype/flatMap/non-callable-argument-throws.js
+++ b/test/built-ins/Array/prototype/flatMap/non-callable-argument-throws.js
@@ -4,6 +4,7 @@
 esid: sec-array.prototype.flatMap
 description: >
     non callable argument should throw TypeError Exception
+features: [Array.prototype.flatMap]
 ---*/
 
 assert.throws(TypeError, function () {
diff --git a/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js b/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js
index ba4c6d26e5..21e44b6818 100644
--- a/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js
+++ b/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatMap
 description: >
     Behavior when `constructor` property is neither an Object nor undefined
     - if IsConstructor(C) is false, throw a TypeError exception.
+features: [Array.prototype.flatMap]
 ---*/
 
 var a = [];
diff --git a/test/built-ins/Array/prototype/flatMap/null-undefined-input-throws.js b/test/built-ins/Array/prototype/flatMap/null-undefined-input-throws.js
index 83ebe5d689..5a4e966e25 100644
--- a/test/built-ins/Array/prototype/flatMap/null-undefined-input-throws.js
+++ b/test/built-ins/Array/prototype/flatMap/null-undefined-input-throws.js
@@ -4,6 +4,7 @@
 esid: sec-array.prototype.flatMap
 description: >
     null or undefined should throw TypeError Exception
+features: [Array.prototype.flatMap]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Array/prototype/flatMap/thisArg-argument.js b/test/built-ins/Array/prototype/flatMap/thisArg-argument.js
index f682045f1e..95b95ca7a3 100644
--- a/test/built-ins/Array/prototype/flatMap/thisArg-argument.js
+++ b/test/built-ins/Array/prototype/flatMap/thisArg-argument.js
@@ -7,6 +7,7 @@ description: >
     Array.prototype.flatMap ( mapperFunction [ , thisArg ] )
 includes: [compareArray.js]
 flags: [onlyStrict]
+features: [Array.prototype.flatMap]
 ---*/
 
 var a = {};
diff --git a/test/built-ins/Array/prototype/flatten/array-like-objects.js b/test/built-ins/Array/prototype/flatten/array-like-objects.js
index f423ed2d7f..f9ed97b058 100644
--- a/test/built-ins/Array/prototype/flatten/array-like-objects.js
+++ b/test/built-ins/Array/prototype/flatten/array-like-objects.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatten
 description: >
     array-like objects can be flattened
 includes: [compareArray.js]
+features: [Array.prototype.flatten]
 ---*/
 
 function getArgumentsObject() {
diff --git a/test/built-ins/Array/prototype/flatten/bound-function-call.js b/test/built-ins/Array/prototype/flatten/bound-function-call.js
index 7d30a6553c..ce4153b87c 100644
--- a/test/built-ins/Array/prototype/flatten/bound-function-call.js
+++ b/test/built-ins/Array/prototype/flatten/bound-function-call.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatten
 description: >
     using bound functions
 includes: [compareArray.js]
+features: [Array.prototype.flatten]
 ---*/
 
 var a = [[0],[1]];
diff --git a/test/built-ins/Array/prototype/flatten/empty-array-elements.js b/test/built-ins/Array/prototype/flatten/empty-array-elements.js
index 4e5195e434..cbf2ae4b07 100644
--- a/test/built-ins/Array/prototype/flatten/empty-array-elements.js
+++ b/test/built-ins/Array/prototype/flatten/empty-array-elements.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatten
 description: >
     arrays with empty arrays elements
 includes: [compareArray.js]
+features: [Array.prototype.flatten]
 ---*/
 
 var a = {};
diff --git a/test/built-ins/Array/prototype/flatten/empty-object-elements.js b/test/built-ins/Array/prototype/flatten/empty-object-elements.js
index 97f031e2d3..356cab6606 100644
--- a/test/built-ins/Array/prototype/flatten/empty-object-elements.js
+++ b/test/built-ins/Array/prototype/flatten/empty-object-elements.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatten
 description: >
     arrays with empty object elements
 includes: [compareArray.js]
+features: [Array.prototype.flatten]
 ---*/
 
 var a = {}, b = {};
diff --git a/test/built-ins/Array/prototype/flatten/length.js b/test/built-ins/Array/prototype/flatten/length.js
index 9b3f2ff8da..704e81158a 100644
--- a/test/built-ins/Array/prototype/flatten/length.js
+++ b/test/built-ins/Array/prototype/flatten/length.js
@@ -6,6 +6,7 @@ description: Array.prototype.flatten.length value and descriptor.
 info: >
   17 ECMAScript Standard Built-in Objects
 includes: [propertyHelper.js]
+features: [Array.prototype.flatten]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Array/prototype/flatten/name.js b/test/built-ins/Array/prototype/flatten/name.js
index bcd55ac1d3..365c7e11ce 100644
--- a/test/built-ins/Array/prototype/flatten/name.js
+++ b/test/built-ins/Array/prototype/flatten/name.js
@@ -7,6 +7,7 @@ description: >
 info: >
   17 ECMAScript Standard Built-in Objects
 includes: [propertyHelper.js]
+features: [Array.prototype.flatten]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js b/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js
index 19772bbcbb..5f6f59d2f0 100644
--- a/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js
+++ b/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatten
 description: >
     if the argument is a string or object, the depthNum is 0
 includes: [compareArray.js]
+features: [Array.prototype.flatten]
 ---*/
 
 var a = [1, [2]];
diff --git a/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js b/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js
index 31a239e792..fc8e876859 100644
--- a/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js
+++ b/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatten
 description: >
     Behavior when `constructor` property is neither an Object nor undefined
     - if IsConstructor(C) is false, throw a TypeError exception.
+features: [Array.prototype.flatten]
 ---*/
 
 var a = [];
diff --git a/test/built-ins/Array/prototype/flatten/null-undefined-elements.js b/test/built-ins/Array/prototype/flatten/null-undefined-elements.js
index 685b902e3f..ef8fb3a532 100644
--- a/test/built-ins/Array/prototype/flatten/null-undefined-elements.js
+++ b/test/built-ins/Array/prototype/flatten/null-undefined-elements.js
@@ -5,7 +5,9 @@ esid: sec-array.prototype.flatten
 description: >
     arrays with null, and undefined
 includes: [compareArray.js]
+features: [Array.prototype.flatten]
 ---*/
+
 var a = [void 0];
 
 assert(compareArray([1, null, void 0].flatten(), [1, null, undefined]));
diff --git a/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js b/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js
index bccb6d2a88..3e711223f7 100644
--- a/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js
+++ b/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js
@@ -4,6 +4,7 @@
 esid: sec-array.prototype.flatten
 description: >
     null or undefined should throw TypeError Exception
+features: [Array.prototype.flatten]
 ---*/
 
 assert.throws(TypeError, function() {
diff --git a/test/built-ins/Array/prototype/flatten/positive-infinity.js b/test/built-ins/Array/prototype/flatten/positive-infinity.js
index 4af7c09773..0c4dfcd593 100644
--- a/test/built-ins/Array/prototype/flatten/positive-infinity.js
+++ b/test/built-ins/Array/prototype/flatten/positive-infinity.js
@@ -5,6 +5,7 @@ esid: sec-array.prototype.flatten
 description: >
     if the argument is a positive infinity, the depthNum is max depth of the array
 includes: [compareArray.js]
+features: [Array.prototype.flatten]
 ---*/
 
 var a = [1, [2, [3, [4]]]]
diff --git a/test/built-ins/Array/prototype/flatten/prop-desc.js b/test/built-ins/Array/prototype/flatten/prop-desc.js
index a3bdc691f1..f7f386148b 100644
--- a/test/built-ins/Array/prototype/flatten/prop-desc.js
+++ b/test/built-ins/Array/prototype/flatten/prop-desc.js
@@ -7,6 +7,7 @@ description: Property type and descriptor.
 info: >
   17 ECMAScript Standard Built-in Objects
 includes: [propertyHelper.js]
+features: [Array.prototype.flatten]
 ---*/
 
 assert.sameValue(
diff --git a/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js b/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js
index ad76cedb39..9bcf98ae0c 100644
--- a/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js
+++ b/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js
@@ -4,6 +4,7 @@
 esid: sec-array.prototype.flatten
 description: >
     if the argument is a Symbol or Object null, it throws exception
+features: [Array.prototype.flatten]
 ---*/
 
 assert.throws(TypeError, function() {
-- 
GitLab