speed up by using acorn tokenizer when possible #73
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a
findFast
function that's exactly likedetective.find
, but doesn't parse the source. detective.find automatically uses findFast if possible.we cannot do this if a custom
isRequire
function is provided, because that can check an arbitrarily complexcallee
. If a customisRequire
function is not provided we only have to check for a single token with nameopts.word,
so then we can look at only the token stream.acorn's tokenizer ignores comments so things like
require /* xyz */ ('abc')
already work.when
opts.nodes
is set, detected require calls are parsed usingacorn.parseExpressionAt
.opts.fullParse
can be set in order to always do a full parse. this can be useful if folks want to make sure that all syntax is correct.I've so far found only one case where this doesn't work:
may add a special case for that if there's nothing else.
e;
Before:
After: