aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-17 13:09:19 +0300
committerJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-17 13:09:19 +0300
commita1ac176dd77ff9acaf62de825c24e3cdbd3bcdaa (patch)
tree55f6248dd71f33cd731d3b67722432fb26df7259
parent3309cad8c27471f6e3c48a6ecea836ee3f9a3d7e (diff)
downloadmyslip-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.rs2
-rw-r--r--src/type/check.rs2
-rw-r--r--src/type/conversion.rs2
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)