Integrate passes into compiler

This commit is contained in:
Pranav Gaddamadugu 2022-07-01 20:03:45 -07:00
parent 2a2a65b416
commit 027bd24cd5

View File

@ -146,30 +146,30 @@ impl<'a> Compiler<'a> {
///
/// Runs the symbol table pass.
///
pub fn symbol_table_pass(&self) -> Result<SymbolTable<'_>> {
pub fn symbol_table_pass(&self) -> Result<SymbolTable> {
CreateSymbolTable::do_pass((&self.ast, self.handler))
}
///
/// Runs the type checker pass.
///
pub fn type_checker_pass(&'a self, symbol_table: &mut SymbolTable<'_>) -> Result<()> {
TypeChecker::do_pass((&self.ast, &mut symbol_table.clone(), self.handler))
pub fn type_checker_pass(&'a self, symbol_table: SymbolTable) -> Result<SymbolTable> {
TypeChecker::do_pass((&self.ast, self.handler, symbol_table))
}
///
/// Runs the compiler stages.
///
pub fn compiler_stages(&self) -> Result<SymbolTable<'_>> {
let mut st = self.symbol_table_pass()?;
self.type_checker_pass(&mut st)?;
pub fn compiler_stages(&self) -> Result<SymbolTable> {
let st = self.symbol_table_pass()?;
let st = self.type_checker_pass(st)?;
Ok(st)
}
///
/// Returns a compiled Leo program.
///
pub fn compile(&mut self) -> Result<SymbolTable<'_>> {
pub fn compile(&mut self) -> Result<SymbolTable> {
self.parse_program()?;
self.compiler_stages()
}