mod visitor;
use visitor::*;
use crate::{CompilerState, Pass};
use leo_ast::{Ast, UnitVisitor};
use leo_errors::Result;
pub struct CheckInterfaces;
impl Pass for CheckInterfaces {
type Input = ();
type Output = ();
const NAME: &'static str = "CheckInterfaces";
fn do_pass(_: Self::Input, state: &mut CompilerState) -> Result<Self::Output> {
let ast = std::mem::take(&mut state.ast);
let mut visitor = CheckInterfacesVisitor::new(state);
match &ast {
Ast::Program(program) => visitor.visit_program(program),
Ast::Library(library) => visitor.visit_library(library),
}
visitor.state.handler.last_err()?;
visitor.state.ast = ast;
Ok(())
}
}