Fix the resolveName function #971
Merged
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.
The
resolveName
function requires a replacement argument string which in most invocations is provided by callingidentifierToString
. That in turn causes a lot of upfront work to be performed just in case an error needs to be reported. That doesn't make sense, particularly for such a performance critical function.This PR changes the
nameArg
argument to be astring | Identifier
such that theidentifierToString
call can be deferred to when it is actually needed. It also gets rid of a nested function that was added to perform certain checks before returning the result (which in turn created a nested function closure on every invocation). These checks are now performed at the end of the function itself.