Given the function source:
function(){// set the script that called this functionupdateLastScript(script)// immediately unset it_setTimeout(function(){updateLastScript(null)},0)cb.apply(this,arguments)}this Regex will incorrectly name the function updateLastScript which is an unfortunate sequence of a comment ending in function followed by a function call.
| if(/function(?:\s+([\w$]+))+\s*\(/.test(curr.toString())){ |
a nested function definition can also trip it up:
function(){functionjim(){// inner}more()statements()}The following update fixes these scenarios, correctly returning null for these two annonymous functions:
- if (/function(?:\s+([\w$]+))+\s*\(/.test(curr.toString())) { + if (/^\s*function(?:\s+([\w$]+))+\s*\(/.test(curr.toString())) { I'm not sure if the "any preceding whitespace" part is strictly necessary but I don't think it hurts to permit that.
I can put together a PR for this including tests but I wanted to post it up as an issue before I get around to that while I work around it.
Given the function source:
this Regex will incorrectly name the function
updateLastScriptwhich is an unfortunate sequence of a comment ending infunctionfollowed by a function call.stack-generator/stack-generator.js
Line 30 in 1e295b6
a nested function definition can also trip it up:
The following update fixes these scenarios, correctly returning
nullfor these two annonymous functions:I'm not sure if the "any preceding whitespace" part is strictly necessary but I don't think it hurts to permit that.
I can put together a PR for this including tests but I wanted to post it up as an issue before I get around to that while I work around it.