Skip to content

Commit

Permalink
Default error node handling for existing visitors
Browse files Browse the repository at this point in the history
  • Loading branch information
SpontanCombust committed Aug 10, 2024
1 parent 8bb5bc5 commit 4b79dc2
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use lsp_types::Range;
use witcherscript::{Script, SyntaxError, SyntaxNode};
use witcherscript::{ErrorNode, Script, SyntaxError, SyntaxNode};
use witcherscript::tokens::*;
use witcherscript::ast::*;
use witcherscript_diagnostics::*;
Expand Down Expand Up @@ -771,4 +771,9 @@ impl SyntaxNodeVisitor for SyntaxErrorVisitor<'_> {
}

// No point in checking single token expressions


fn visit_error(&mut self, _n: &ErrorNode, _ctx: &TraversalContextStack) -> ErrorTraversalPolicy {
TraversalPolicy::default_to(false)
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use std::{cell::RefCell, collections::HashMap, hash::Hash, rc::Rc};
use witcherscript::ErrorNode;
use witcherscript::{ast::*, attribs::*, script_document::ScriptDocument};
use crate::utils::SymbolPathBuilderPayload;
use super::symbol_path::{SymbolPath, SymbolPathBuf};
Expand Down Expand Up @@ -487,6 +488,11 @@ impl SyntaxNodeVisitor for UnqualifiedNameLookupBuilder<'_> {

TraversalPolicy::default_to(true)
}


fn visit_error(&mut self, _n: &ErrorNode, _ctx: &TraversalContextStack) -> ErrorTraversalPolicy {
TraversalPolicy::default_to(false)
}
}

impl SyntaxNodeVisitorChainLink for UnqualifiedNameLookupBuilder<'_> {}
7 changes: 6 additions & 1 deletion crates/analysis/src/utils/visitors/expr_evaluator.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::{cell::RefCell, rc::Rc};
use witcherscript::{ast::*, tokens::*, script_document::ScriptDocument};
use witcherscript::{ast::*, script_document::ScriptDocument, tokens::*, ErrorNode};
use crate::symbol_analysis::{symbol_path::{SymbolPath, SymbolPathBuf}, symbol_table::marcher::SymbolTableMarcher, symbols::*, unqualified_name_lookup::UnqualifiedNameLookup};
use super::SymbolPathBuilderPayload;

Expand Down Expand Up @@ -408,4 +408,9 @@ impl SyntaxNodeVisitor for ExpressionEvaluator<'_> {

self.push(conseq_path, ctx.top());
}


fn visit_error(&mut self, _n: &ErrorNode, _ctx: &TraversalContextStack) -> ErrorTraversalPolicy {
TraversalPolicy::default_to(false)
}
}
7 changes: 6 additions & 1 deletion crates/analysis/src/utils/visitors/sympath_builder.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::{cell::RefCell, rc::Rc};
use witcherscript::{ast::*, script_document::ScriptDocument};
use witcherscript::{ast::*, script_document::ScriptDocument, ErrorNode};
use crate::symbol_analysis::{symbol_path::SymbolPathBuf, symbols::*};


Expand Down Expand Up @@ -132,6 +132,11 @@ impl SyntaxNodeVisitor for SymbolPathBuilder<'_> {
fn exit_event_decl(&mut self, _: &EventDeclarationNode, _: &TraversalContextStack) {
self.payload.borrow_mut().current_sympath.pop();
}


fn visit_error(&mut self, _n: &ErrorNode, _ctx: &TraversalContextStack) -> ErrorTraversalPolicy {
TraversalPolicy::default_to(false)
}
}

impl SyntaxNodeVisitorChainLink for SymbolPathBuilder<'_> {}
6 changes: 6 additions & 0 deletions crates/lsp/src/providers/common.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::{cell::RefCell, rc::Rc};
use tower_lsp::lsp_types as lsp;
use witcherscript::ErrorNode;
use witcherscript::{ast::*, script_document::ScriptDocument, tokens::*};
use witcherscript_analysis::symbol_analysis::symbol_table::marcher::SymbolTableMarcher;
use witcherscript_analysis::symbol_analysis::symbols::*;
Expand Down Expand Up @@ -534,6 +535,11 @@ impl SyntaxNodeVisitor for TextDocumentPositionResolver<'_> {

TraversalPolicy::default_to(true)
}


fn visit_error(&mut self, _n: &ErrorNode, _ctx: &TraversalContextStack) -> ErrorTraversalPolicy {
TraversalPolicy::default_to(false)
}
}

impl SyntaxNodeVisitorChainLink for TextDocumentPositionResolver<'_> {}
Expand Down
7 changes: 6 additions & 1 deletion crates/lsp/src/providers/selection_range.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::{cell::RefCell, rc::Rc};
use tower_lsp::lsp_types as lsp;
use tower_lsp::jsonrpc::Result;
use abs_path::AbsPath;
use witcherscript::{ast::*, tokens::*};
use witcherscript::{ast::*, tokens::*, ErrorNode};
use witcherscript_analysis::utils::{PositionFilter, PositionFilterPayload};
use crate::Backend;

Expand Down Expand Up @@ -632,6 +632,11 @@ impl SyntaxNodeVisitor for SelectionRangeResolver {
fn visit_virtual_parent_expr(&mut self, n: &VirtualParentExpressionNode, _: &TraversalContextStack) {
self.range_stack.push(n.range());
}


fn visit_error(&mut self, _n: &ErrorNode, _ctx: &TraversalContextStack) -> ErrorTraversalPolicy {
TraversalPolicy::default_to(false)
}
}

impl SyntaxNodeVisitorChainLink for SelectionRangeResolver {}

0 comments on commit 4b79dc2

Please sign in to comment.