From a1ac176dd77ff9acaf62de825c24e3cdbd3bcdaa Mon Sep 17 00:00:00 2001 From: Joel Kronqvist Date: Sun, 17 Aug 2025 13:09:19 +0300 Subject: fix: changed type of (() T) from (T ...) to (Vector (T ...)) this makes the type of the empty vector consistent with the runtime behavior and prevents weirdly typed expressions such as (vector (() Int)) : (Vector (Int ...)). removed an unused import in case.rs and changed a unused pattern variable to an underscore in conversion.rs. --- src/sexp/case.rs | 2 +- src/type/check.rs | 2 +- src/type/conversion.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sexp/case.rs b/src/sexp/case.rs index 0c3d82d..4c2c7ba 100644 --- a/src/sexp/case.rs +++ b/src/sexp/case.rs @@ -1,5 +1,5 @@ -use crate::sexp::{SExp, SLeaf, SExp::*, SLeaf::*, util::*}; +use crate::sexp::{SExp, SLeaf, SExp::*, SLeaf::*}; impl SExp { /** diff --git a/src/type/check.rs b/src/type/check.rs index fd5d1d3..a54ffc2 100644 --- a/src/type/check.rs +++ b/src/type/check.rs @@ -292,7 +292,7 @@ impl SExp { if (**op).clone() == Atom(Nil) { return match (**l).clone() { SCons(v, n) if *n == Atom(Nil) => match *v { - Atom(Ty(t)) => Ok(vecof(t)), + Atom(Ty(t)) => Ok(List(vec![VecType, vecof(t)])), _ => Err(OtherError), }, _ => Err(OtherError) diff --git a/src/type/conversion.rs b/src/type/conversion.rs index 1ada0d3..1d14971 100644 --- a/src/type/conversion.rs +++ b/src/type/conversion.rs @@ -109,7 +109,7 @@ impl Type { } }, - (VecOf(a), VecOf(b)) => { + (VecOf(_), VecOf(b)) => { match &**b { VarType(s) => (vecof(vt(s)), ctx), _ => (vt("T"), ctx) -- cgit v1.2.3