stack-generator
stack-generator copied to clipboard
Function name regex can get incorrect name for annoymous function
Given the function source:
function () {
// set the script that called this function
updateLastScript(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.
https://github.com/stacktracejs/stack-generator/blob/1e295b637b5bc6a44b4c117faca1709bcf20e744/stack-generator.js#L30
a nested function definition can also trip it up:
function () {
function jim() {
// 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.