| 'use strict'; |
| |
| var GetIntrinsic = require('get-intrinsic'); |
| |
| var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true); |
| |
| var Get = require('./Get'); |
| var IsArray = require('./IsArray'); |
| var ToBoolean = require('./ToBoolean'); |
| var Type = require('./Type'); |
| |
| // https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable |
| |
| module.exports = function IsConcatSpreadable(O) { |
| if (Type(O) !== 'Object') { |
| return false; |
| } |
| if ($isConcatSpreadable) { |
| var spreadable = Get(O, $isConcatSpreadable); |
| if (typeof spreadable !== 'undefined') { |
| return ToBoolean(spreadable); |
| } |
| } |
| return IsArray(O); |
| }; |