use crate::CompilerState;
use leo_ast::NodeID;
use leo_span::Symbol;
pub struct PathResolutionVisitor<'a> {
pub state: &'a mut CompilerState,
pub program: Symbol,
pub module: Vec<Symbol>,
}
impl PathResolutionVisitor<'_> {
pub fn in_module_scope<T>(&mut self, module: &[Symbol], func: impl FnOnce(&mut Self) -> T) -> T {
let parent_module = self.module.clone();
self.module = module.to_vec();
let result = func(self);
self.module = parent_module;
result
}
pub fn in_scope<T>(&mut self, id: NodeID, func: impl FnOnce(&mut Self) -> T) -> T {
self.state.symbol_table.enter_scope(Some(id));
let result = func(self);
self.state.symbol_table.enter_parent();
result
}
}