var realNames = require('./_realNames');

/** Used for built-in method references. */ var objectProto = Object.prototype;

/** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty;

/**

* Gets the name of `func`.
*
* @private
* @param {Function} func The function to query.
* @returns {string} Returns the function name.
*/

function getFuncName(func) {

var result = (func.name + ''),
    array = realNames[result],
    length = hasOwnProperty.call(realNames, result) ? array.length : 0;

while (length--) {
  var data = array[length],
      otherFunc = data.func;
  if (otherFunc == null || otherFunc == func) {
    return data.name;
  }
}
return result;

}

module.exports = getFuncName;