Types need handle to symbol table

This commit is contained in:
greg 2018-06-03 02:27:52 -07:00
parent 81ca9ee20f
commit 856a360aba
2 changed files with 6 additions and 3 deletions

View File

@ -44,8 +44,8 @@ impl Schala {
let symbols = Rc::new(RefCell::new(symbol_table::SymbolTable::new()));
Schala {
symbol_table: symbols.clone(),
type_context: typechecking::TypeContext::new(symbols.clone()),
state: eval::State::new(symbols),
type_context: typechecking::TypeContext::new(),
}
}
}

View File

@ -1,3 +1,4 @@
use std::cell::RefCell;
use std::rc::Rc;
use std::collections::{HashSet, HashMap};
/*
@ -10,6 +11,7 @@ use itertools::Itertools;
use parsing;
use util::StateStack;
use symbol_table::{SymbolSpec, Symbol, SymbolTable};
pub type TypeName = Rc<String>;
type TypeResult<T> = Result<T, String>;
@ -54,12 +56,13 @@ impl TypeEnv {
pub struct TypeContext<'a> {
values: StateStack<'a, TypeName, Type>,
symbol_table_handle: Rc<RefCell<SymbolTable>>,
global_env: TypeEnv
}
impl<'a> TypeContext<'a> {
pub fn new() -> TypeContext<'static> {
TypeContext { values: StateStack::new(None), global_env: TypeEnv::default() }
pub fn new(symbol_table_handle: Rc<RefCell<SymbolTable>>) -> TypeContext<'static> {
TypeContext { values: StateStack::new(None), global_env: TypeEnv::default(), symbol_table_handle }
}
pub fn debug_types(&self) -> String {