From fdae943090463526423f5e43e72cd2f0e8147a1b Mon Sep 17 00:00:00 2001 From: Joel Kronqvist Date: Mon, 4 Aug 2025 23:50:46 +0300 Subject: Added repl and some documentation. Improved error messages. Removed dead code. * Removed same_variant in parse::parsetree * Added SExp::multistep (for use of the repl) Improved error messages: * Added parenthesis around types * Changed how errors propagate inferring generics: added the error variant ArgumentsDontMatchGeneric, implemented the displaying of it, added tests for it. * Had to change some tests to match for the new changes --- src/sexp/display.rs | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/sexp/display.rs') diff --git a/src/sexp/display.rs b/src/sexp/display.rs index e6dbb7c..238e8d4 100644 --- a/src/sexp/display.rs +++ b/src/sexp/display.rs @@ -26,20 +26,17 @@ impl fmt::Display for SExp { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Atom(leaf) => write!(f, "{}", leaf.to_string()), - SCons(a, b) => { - match scons(a.clone(), b.clone()).into_vec() { - Ok(l) => write!( - f, - "({})", - l.into_iter() - .map(|x| x.to_string()) - .collect::>() - .join(" ") - ), - Err(_) => write!(f, "({} {})", *a, *b), - } - } + SCons(a, b) => + write!( + f, + "({})", + scons(a.clone(), b.clone()) + .parts() + .into_iter() + .map(|x| x.to_string()) + .collect::>() + .join(" ") + ) } } - } -- cgit v1.2.3