Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Function name regex can get incorrect name for annoymous function #6

Open
bengourley opened this issue Apr 25, 2019 · 0 comments
Open

Comments

@bengourley
Copy link
Contributor

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.

if (/function(?:\s+([\w$]+))+\s*\(/.test(curr.toString())) {

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant