Skip to content

Commit

Permalink
Added traverse_errors field to interested traversal policies
Browse files Browse the repository at this point in the history
  • Loading branch information
SpontanCombust committed Aug 10, 2024
1 parent 4b79dc2 commit 3a5c7a2
Show file tree
Hide file tree
Showing 5 changed files with 296 additions and 126 deletions.
67 changes: 52 additions & 15 deletions crates/analysis/src/jobs/scan_symbols.rs
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,10 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {


fn visit_root(&mut self, _: &RootNode) -> RootTraversalPolicy {
RootTraversalPolicy { traverse: true }
RootTraversalPolicy {
traverse: true,
traverse_errors: false
}
}

fn visit_class_decl(&mut self, n: &ClassDeclarationNode) -> ClassDeclarationTraversalPolicy {
Expand Down Expand Up @@ -276,7 +279,8 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {
}

ClassDeclarationTraversalPolicy {
traverse_definition
traverse_definition,
traverse_errors: false
}
}

Expand Down Expand Up @@ -334,7 +338,8 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {
}

StateDeclarationTraversalPolicy {
traverse_definition
traverse_definition,
traverse_errors: false
}
}

Expand Down Expand Up @@ -383,7 +388,8 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {
}

StructDeclarationTraversalPolicy {
traverse_definition
traverse_definition,
traverse_errors: false
}
}

Expand Down Expand Up @@ -416,7 +422,8 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {
}

EnumDeclarationTraversalPolicy {
traverse_definition
traverse_definition,
traverse_errors: false
}
}

Expand Down Expand Up @@ -535,7 +542,8 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {

FunctionDeclarationTraversalPolicy {
traverse_params: traverse,
traverse_definition: traverse
traverse_definition: traverse,
traverse_errors: false
}
}

Expand Down Expand Up @@ -611,7 +619,8 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {

FunctionDeclarationTraversalPolicy {
traverse_params: traverse,
traverse_definition: traverse
traverse_definition: traverse,
traverse_errors: false
}
}

Expand Down Expand Up @@ -645,7 +654,8 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {

EventDeclarationTraversalPolicy {
traverse_params: traverse,
traverse_definition: traverse
traverse_definition: traverse,
traverse_errors: false
}
}

Expand Down Expand Up @@ -775,31 +785,58 @@ impl SyntaxNodeVisitor for SymbolScannerVisitor<'_> {
}

VarDeclarationTraversalPolicy {
traverse_init_value: false
traverse_init_value: false,
traverse_errors: false
}
}

fn visit_compound_stmt(&mut self, _: &CompoundStatementNode, _: &TraversalContextStack) -> CompoundStatementTraversalPolicy {
CompoundStatementTraversalPolicy { traverse: true }
CompoundStatementTraversalPolicy {
traverse: true,
traverse_errors: false
}
}

fn visit_while_stmt(&mut self, _: &WhileLoopNode, _: &TraversalContextStack) -> WhileLoopTraversalPolicy {
WhileLoopTraversalPolicy { traverse_cond: false, traverse_body: true }
WhileLoopTraversalPolicy {
traverse_cond: false,
traverse_body: true,
traverse_errors: false
}
}

fn visit_do_while_stmt(&mut self, _: &DoWhileLoopNode, _: &TraversalContextStack) -> DoWhileLoopTraversalPolicy {
DoWhileLoopTraversalPolicy { traverse_cond: false, traverse_body: true }
DoWhileLoopTraversalPolicy {
traverse_cond: false,
traverse_body: true,
traverse_errors: false
}
}

fn visit_for_stmt(&mut self, _: &ForLoopNode, _: &TraversalContextStack) -> ForLoopTraversalPolicy {
ForLoopTraversalPolicy { traverse_init: false, traverse_cond: false, traverse_iter: false, traverse_body: true }
ForLoopTraversalPolicy {
traverse_init: false,
traverse_cond: false,
traverse_iter: false,
traverse_body: true,
traverse_errors: false
}
}

fn visit_if_stmt(&mut self, _: &IfConditionalNode, _: &TraversalContextStack) -> IfConditionalTraversalPolicy {
IfConditionalTraversalPolicy { traverse_cond: false, traverse_body: true, traverse_else_body: true }
IfConditionalTraversalPolicy {
traverse_cond: false,
traverse_body: true,
traverse_else_body: true,
traverse_errors: false
}
}

fn visit_switch_stmt(&mut self, _: &SwitchConditionalNode, _: &TraversalContextStack) -> SwitchConditionalTraversalPolicy {
SwitchConditionalTraversalPolicy { traverse_cond: false, traverse_body: true }
SwitchConditionalTraversalPolicy {
traverse_cond: false,
traverse_body: true,
traverse_errors: false
}
}
}
30 changes: 20 additions & 10 deletions crates/analysis/src/jobs/syntax_analysis/contextual_analysis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -447,15 +447,17 @@ impl SyntaxNodeVisitor for ContextualSyntaxAnalysis<'_> {
}

VarDeclarationTraversalPolicy {
traverse_init_value: false
traverse_init_value: false,
traverse_errors: false
}
}

fn visit_expr_stmt(&mut self, _: &ExpressionStatementNode, _: &TraversalContextStack) -> ExpressionStatementTraversalPolicy {
self.visited_non_var_stmt_before = true;

ExpressionStatementTraversalPolicy {
traverse_expr: false
traverse_expr: false,
traverse_errors: false
}
}

Expand All @@ -465,7 +467,8 @@ impl SyntaxNodeVisitor for ContextualSyntaxAnalysis<'_> {
IfConditionalTraversalPolicy {
traverse_cond: false,
traverse_body: true,
traverse_else_body: true
traverse_else_body: true,
traverse_errors: false
}
}

Expand All @@ -474,7 +477,8 @@ impl SyntaxNodeVisitor for ContextualSyntaxAnalysis<'_> {

SwitchConditionalTraversalPolicy {
traverse_cond: false,
traverse_body: true
traverse_body: true,
traverse_errors: false
}
}

Expand All @@ -485,7 +489,8 @@ impl SyntaxNodeVisitor for ContextualSyntaxAnalysis<'_> {
traverse_init: false,
traverse_cond: false,
traverse_iter: false,
traverse_body: true
traverse_body: true,
traverse_errors: false
}
}

Expand All @@ -494,7 +499,8 @@ impl SyntaxNodeVisitor for ContextualSyntaxAnalysis<'_> {

WhileLoopTraversalPolicy {
traverse_cond: false,
traverse_body: true
traverse_body: true,
traverse_errors: false
}
}

Expand All @@ -503,31 +509,35 @@ impl SyntaxNodeVisitor for ContextualSyntaxAnalysis<'_> {

DoWhileLoopTraversalPolicy {
traverse_cond: false,
traverse_body: true
traverse_body: true,
traverse_errors: false
}
}

fn visit_delete_stmt(&mut self, _: &DeleteStatementNode, _: &TraversalContextStack) -> DeleteStatementTraversalPolicy {
self.visited_non_var_stmt_before = true;

DeleteStatementTraversalPolicy {
traverse_value: false
traverse_value: false,
traverse_errors: false
}
}

fn visit_compound_stmt(&mut self, _: &CompoundStatementNode, _: &TraversalContextStack) -> CompoundStatementTraversalPolicy {
self.visited_non_var_stmt_before = true;

CompoundStatementTraversalPolicy {
traverse: true
traverse: true,
traverse_errors: false
}
}

fn visit_return_stmt(&mut self, _: &ReturnStatementNode, _: &TraversalContextStack) -> ReturnStatementTraversalPolicy {
self.visited_non_var_stmt_before = true;

ReturnStatementTraversalPolicy {
traverse_value: false
traverse_value: false,
traverse_errors: false
}
}
}
Loading

0 comments on commit 3a5c7a2

Please sign in to comment.