blob: 141b33414dd0f2b08800310e08771e9de739e4ae [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
5var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true);
6
7var Get = require('./Get');
8var IsArray = require('./IsArray');
9var ToBoolean = require('./ToBoolean');
10var Type = require('./Type');
11
12// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable
13
14module.exports = function IsConcatSpreadable(O) {
15 if (Type(O) !== 'Object') {
16 return false;
17 }
18 if ($isConcatSpreadable) {
19 var spreadable = Get(O, $isConcatSpreadable);
20 if (typeof spreadable !== 'undefined') {
21 return ToBoolean(spreadable);
22 }
23 }
24 return IsArray(O);
25};