aboutsummaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat')
-rw-r--r--tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/implement.js6
-rw-r--r--tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/index.js4
-rw-r--r--tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/is-implemented.js7
-rw-r--r--tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/shim.js39
4 files changed, 56 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/implement.js b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/implement.js
new file mode 100644
index 0000000000..80c67cb4fa
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/implement.js
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+ Object.defineProperty(Array.prototype, 'concat', { value: require('./shim'),
+ configurable: true, enumerable: false, writable: true });
+}
diff --git a/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/index.js b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/index.js
new file mode 100644
index 0000000000..db205ea54a
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/index.js
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+ Array.prototype.concat : require('./shim');
diff --git a/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/is-implemented.js b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/is-implemented.js
new file mode 100644
index 0000000000..cab8bc9e32
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/is-implemented.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+ return (new SubArray()).concat('foo') instanceof SubArray;
+};
diff --git a/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/shim.js b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/shim.js
new file mode 100644
index 0000000000..8b28e4ae03
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/concat/shim.js
@@ -0,0 +1,39 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+ , toPosInt = require('../../../number/to-pos-integer')
+ , isObject = require('../../../object/is-object')
+
+ , isArray = Array.isArray, concat = Array.prototype.concat
+ , forEach = Array.prototype.forEach
+
+ , isSpreadable;
+
+isSpreadable = function (value) {
+ if (!value) return false;
+ if (!isObject(value)) return false;
+ if (value['@@isConcatSpreadable'] !== undefined) {
+ return Boolean(value['@@isConcatSpreadable']);
+ }
+ return isArray(value);
+};
+
+module.exports = function (item/*, …items*/) {
+ var result;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return concat.apply(this, arguments);
+ }
+ result = new this.constructor(this.length);
+ forEach.call(this, function (val, i) { result[i] = val; });
+ forEach.call(arguments, function (arg) {
+ var base;
+ if (isSpreadable(arg)) {
+ base = result.length;
+ result.length += toPosInt(arg.length);
+ forEach.call(arg, function (val, i) { result[base + i] = val; });
+ return;
+ }
+ result.push(arg);
+ });
+ return result;
+};