diff options
author | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-17 13:09:19 +0300 |
---|---|---|
committer | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-17 13:09:19 +0300 |
commit | a1ac176dd77ff9acaf62de825c24e3cdbd3bcdaa (patch) | |
tree | 55f6248dd71f33cd731d3b67722432fb26df7259 | |
parent | 3309cad8c27471f6e3c48a6ecea836ee3f9a3d7e (diff) | |
download | myslip-a1ac176dd77ff9acaf62de825c24e3cdbd3bcdaa.tar.gz myslip-a1ac176dd77ff9acaf62de825c24e3cdbd3bcdaa.zip |
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.
-rw-r--r-- | src/sexp/case.rs | 2 | ||||
-rw-r--r-- | src/type/check.rs | 2 | ||||
-rw-r--r-- | 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) |