diff --git a/schala-lang/src/schala.rs b/schala-lang/src/schala.rs index 9207721..c55041f 100644 --- a/schala-lang/src/schala.rs +++ b/schala-lang/src/schala.rs @@ -88,8 +88,7 @@ impl<'a> Schala<'a> { self.timings.push(("symbol_table", sw.elapsed())); // Typechecking - // TODO typechecking not working - //let _overall_type = self.type_context.typecheck(&ast).map_err(SchalaError::from_type_error); + let _overall_type = self.type_context.typecheck(&ast).map_err(SchalaError::from_type_error); let sw = Stopwatch::start_new(); let reduced_ir = reduced_ir::reduce(&ast, &self.symbol_table, &self.type_context); diff --git a/schala-lang/src/type_inference/mod.rs b/schala-lang/src/type_inference/mod.rs index 1c89277..e7f541d 100644 --- a/schala-lang/src/type_inference/mod.rs +++ b/schala-lang/src/type_inference/mod.rs @@ -1,7 +1,7 @@ use std::{collections::HashMap, convert::From}; use crate::{ - ast::TypeIdentifier, + ast::{TypeIdentifier, AST}, identifier::{define_id_kind, Id, IdStore}, }; @@ -96,6 +96,11 @@ impl TypeContext { pub fn lookup_type(&self, type_id: &TypeId) -> Option<&DefinedType> { self.defined_types.get(type_id) } + + //TODO return some kind of overall type later? + pub fn typecheck(&mut self, ast: &AST) -> Result<(), TypeError> { + Ok(()) + } } /// A type defined in program source code, as opposed to a builtin.