From 15f9dbe7a6ad64cf9cb3f531c62b53e19001d42e Mon Sep 17 00:00:00 2001 From: greg Date: Tue, 6 Nov 2018 13:44:52 -0800 Subject: [PATCH] Typechecking infrastructure --- schala-lang/language/src/lib.rs | 7 +++++-- schala-lang/language/src/typechecking.rs | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/schala-lang/language/src/lib.rs b/schala-lang/language/src/lib.rs index 9161924..1c36b66 100644 --- a/schala-lang/language/src/lib.rs +++ b/schala-lang/language/src/lib.rs @@ -43,6 +43,7 @@ mod eval; pub struct Schala { state: eval::State<'static>, symbol_table: Rc>, + type_context: typechecking::TypeContext, active_parser: Option, } @@ -62,6 +63,7 @@ impl Schala { Schala { symbol_table: symbols.clone(), state: eval::State::new(symbols), + type_context: typechecking::TypeContext::new(), active_parser: None, } } @@ -126,8 +128,9 @@ fn symbol_table(handle: &mut Schala, input: ast::AST, comp: Option<&mut Unfinish } } -fn typechecking(_handle: &mut Schala, input: ast::AST, _comp: Option<&mut UnfinishedComputation>) -> Result { - Ok(input) +fn typechecking(handle: &mut Schala, input: ast::AST, _comp: Option<&mut UnfinishedComputation>) -> Result { + + handle.type_context.typecheck(&input).map(|_| input) } fn ast_reducing(handle: &mut Schala, input: ast::AST, comp: Option<&mut UnfinishedComputation>) -> Result { diff --git a/schala-lang/language/src/typechecking.rs b/schala-lang/language/src/typechecking.rs index 01e159e..5efa99a 100644 --- a/schala-lang/language/src/typechecking.rs +++ b/schala-lang/language/src/typechecking.rs @@ -1,3 +1,19 @@ use std::rc::Rc; +use ast::AST; + pub type TypeName = Rc; + +pub struct TypeContext { + +} + +impl TypeContext { + pub fn new() -> TypeContext { + TypeContext { } + } + + pub fn typecheck(&mut self, _ast: &AST) -> Result<(), String> { + Ok(()) + } +}