From 8062ed87d30fa7628f26cfd7bb94bb0e7401752b Mon Sep 17 00:00:00 2001 From: Joel Kronqvist Date: Sat, 9 Aug 2025 21:18:48 +0300 Subject: Revert adding of print (its behavior was poorly designed). This reverts commit 3e1bf7f9946efe70d452c71494ac77ed39110804. --- src/type/check.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/type/check.rs') diff --git a/src/type/check.rs b/src/type/check.rs index 91ca422..e536ce7 100644 --- a/src/type/check.rs +++ b/src/type/check.rs @@ -163,11 +163,7 @@ impl SExp { /// }; /// ``` pub fn type_check(&self) -> Result { - let ty = self.infer_type(HashMap::new())?; - match ty.is_concrete() { - Ok(()) => Ok(ty), - Err(s) => Err(UnboundGeneric(ty, s)), - } + self.infer_type(HashMap::new()) } @@ -198,7 +194,6 @@ impl SExp { List(vec![VecType, vecof(vt("T"))]) )), Atom(Let) => Ok(LetType), - Atom(Print) => Ok(arr(vt("_"), arr(vt("T"), vt("T")))), SCons(op, l) => { @@ -303,11 +298,10 @@ impl Type { restype = restype.subst(&name, &ty); } - //match restype.is_concrete() { - // Ok(()) => Ok(arr(argtype.clone(), restype)), - // Err(unbound) => Err(UnboundGeneric(unbound)), - //} - Ok(arr(argtype.clone(), restype)) + match restype.is_concrete() { + Ok(()) => Ok(arr(argtype.clone(), restype)), + Err(unbound) => Err(UnboundGeneric(unbound)), + } }, _ => Err(OtherError) } @@ -384,6 +378,14 @@ impl Type { mod tests { use super::{*, TypeError}; + #[test] + fn test_failing_infer_generics() { + assert_eq!( + arr(Integer, VarType("X".to_string())).infer_generics(&Integer), + Err(TypeError::UnboundGeneric(String::from("X"))) + ); + } + #[test] fn test_infer_generics() { -- cgit v1.2.3