var Symbol = require('./_Symbol'),

getRawTag = require('./_getRawTag'),
objectToString = require('./_objectToString');

/** `Object#toString` result references. */ var nullTag = '[object Null]',

undefinedTag = '[object Undefined]';

/** Built-in value references. */ var symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/**

* The base implementation of `getTag` without fallbacks for buggy environments.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/

function baseGetTag(value) {

if (value == null) {
  return value === undefined ? undefinedTag : nullTag;
}
return (symToStringTag && symToStringTag in Object(value))
  ? getRawTag(value)
  : objectToString(value);

}

module.exports = baseGetTag;