Avoid unnecessary visit* method calls #9105
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.
Yet another quick and easy optimization. The current
SyntaxVisitor
is a concrete syntax tree (CST) / parse tree visitor which visits every single syntax tree node, but in most cases, this is not necessary. The PR splitsSyntaxVisitor
into anAstVisitor
for traversing the AST (which doesn't include tokens such as keywords and brackets) and aCstVisitor
for visiting the CST. Visitors that need to access all syntax nodes, such asDocumentBuildVisitor
,ParseDiagnosticsVisitor
, etc., are inherited fromCstVisitor
. Other visitors are inherited fromAstVisitor
.Closes #7403.
Benchmarks
CstVisitor
vs.AstVisitor
Compilation
Before
After
Microsoft Reviewers: Open in CodeFlow