| 'use strict'; | 
| var DESCRIPTORS = require('../internals/descriptors'); | 
| var FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS; | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
| var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); | 
|   | 
| var FunctionPrototype = Function.prototype; | 
| var functionToString = uncurryThis(FunctionPrototype.toString); | 
| var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; | 
| var regExpExec = uncurryThis(nameRE.exec); | 
| var NAME = 'name'; | 
|   | 
| // Function instances `.name` property | 
| // https://tc39.es/ecma262/#sec-function-instances-name | 
| if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) { | 
|   defineBuiltInAccessor(FunctionPrototype, NAME, { | 
|     configurable: true, | 
|     get: function () { | 
|       try { | 
|         return regExpExec(nameRE, functionToString(this))[1]; | 
|       } catch (error) { | 
|         return ''; | 
|       } | 
|     } | 
|   }); | 
| } |