'use strict'; 
 | 
var DESCRIPTORS = require('../internals/descriptors'); 
 | 
var fails = require('../internals/fails'); 
 | 
var anObject = require('../internals/an-object'); 
 | 
var normalizeStringArgument = require('../internals/normalize-string-argument'); 
 | 
  
 | 
var nativeErrorToString = Error.prototype.toString; 
 | 
  
 | 
var INCORRECT_TO_STRING = fails(function () { 
 | 
  if (DESCRIPTORS) { 
 | 
    // Chrome 32- incorrectly call accessor 
 | 
    // eslint-disable-next-line es/no-object-create, es/no-object-defineproperty -- safe 
 | 
    var object = Object.create(Object.defineProperty({}, 'name', { get: function () { 
 | 
      return this === object; 
 | 
    } })); 
 | 
    if (nativeErrorToString.call(object) !== 'true') return true; 
 | 
  } 
 | 
  // FF10- does not properly handle non-strings 
 | 
  return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1' 
 | 
    // IE8 does not properly handle defaults 
 | 
    || nativeErrorToString.call({}) !== 'Error'; 
 | 
}); 
 | 
  
 | 
module.exports = INCORRECT_TO_STRING ? function toString() { 
 | 
  var O = anObject(this); 
 | 
  var name = normalizeStringArgument(O.name, 'Error'); 
 | 
  var message = normalizeStringArgument(O.message); 
 | 
  return !name ? message : !message ? name : name + ': ' + message; 
 | 
} : nativeErrorToString; 
 |