Alias for symbol table handle type

This commit is contained in:
greg 2019-10-21 04:09:43 -07:00
parent 3906210db8
commit 944916d6af
2 changed files with 5 additions and 4 deletions

View File

@ -1,11 +1,10 @@
use std::cell::RefCell;
use std::rc::Rc; use std::rc::Rc;
use std::fmt::Write; use std::fmt::Write;
use std::io; use std::io;
use itertools::Itertools; use itertools::Itertools;
use crate::schala::SymbolTableHandle;
use crate::util::ScopeStack; use crate::util::ScopeStack;
use crate::reduced_ast::{BoundVars, ReducedAST, Stmt, Expr, Lit, Func, Alternative, Subpattern}; use crate::reduced_ast::{BoundVars, ReducedAST, Stmt, Expr, Lit, Func, Alternative, Subpattern};
use crate::symbol_table::{SymbolSpec, Symbol, SymbolTable, FullyQualifiedSymbolName}; use crate::symbol_table::{SymbolSpec, Symbol, SymbolTable, FullyQualifiedSymbolName};
@ -15,11 +14,11 @@ mod test;
pub struct State<'a> { pub struct State<'a> {
values: ScopeStack<'a, Rc<String>, ValueEntry>, values: ScopeStack<'a, Rc<String>, ValueEntry>,
symbol_table_handle: Rc<RefCell<SymbolTable>>, symbol_table_handle: SymbolTableHandle,
} }
impl<'a> State<'a> { impl<'a> State<'a> {
pub fn new(symbol_table_handle: Rc<RefCell<SymbolTable>>) -> State<'a> { pub fn new(symbol_table_handle: SymbolTableHandle) -> State<'a> {
let values = ScopeStack::new(Some(format!("global"))); let values = ScopeStack::new(Some(format!("global")));
State { values, symbol_table_handle } State { values, symbol_table_handle }
} }

View File

@ -12,6 +12,8 @@ LangMetaRequest, LangMetaResponse, GlobalOutputStats,
DebugResponse, DebugAsk}; DebugResponse, DebugAsk};
use crate::{ast, reduced_ast, tokenizing, parsing, eval, typechecking, symbol_table}; use crate::{ast, reduced_ast, tokenizing, parsing, eval, typechecking, symbol_table};
pub type SymbolTableHandle = Rc<RefCell<symbol_table::SymbolTable>>;
/// All the state necessary to parse and execute a Schala program are stored in this struct. /// All the state necessary to parse and execute a Schala program are stored in this struct.
/// `state` represents the execution state for the AST-walking interpreter, the other fields /// `state` represents the execution state for the AST-walking interpreter, the other fields
/// should be self-explanatory. /// should be self-explanatory.