aboutsummaryrefslogtreecommitdiff
path: root/src/type/mod.rs
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-05 18:07:50 +0300
committerJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-05 18:07:50 +0300
commitd64165e9e6af92bfe350e5d2cc46545b28dbb5c0 (patch)
treed7a6abb03a83ad08194b94db7b82a6c5f32b4819 /src/type/mod.rs
parent1e712e91edea0735c5eb440af26ac6d4454e70a9 (diff)
downloadmyslip-d64165e9e6af92bfe350e5d2cc46545b28dbb5c0.tar.gz
myslip-d64165e9e6af92bfe350e5d2cc46545b28dbb5c0.zip
Added vectors and tests for their evaluation and typing
Diffstat (limited to 'src/type/mod.rs')
-rw-r--r--src/type/mod.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/type/mod.rs b/src/type/mod.rs
index e29e069..01aed40 100644
--- a/src/type/mod.rs
+++ b/src/type/mod.rs
@@ -22,6 +22,8 @@ pub enum Type {
List(Vec<Type>),
+ VecOf(Box<Type>),
+
/// Type for generics
/// and also error messages
/// with unknown types
@@ -89,6 +91,9 @@ impl Type {
/// .is_concrete(),
/// Err("a".to_string())
/// );
+ ///
+ /// assert_eq!(vecof(vt("a")).is_concrete(), Err("a".to_string()));
+ /// assert_eq!(vecof(Integer).is_concrete(), Ok(()));
/// ```
pub fn is_concrete(&self) -> Result<(), String> {
match self {
@@ -103,6 +108,7 @@ impl Type {
}
res
},
+ VecOf(ty) => (*ty).is_concrete(),
VarType(s) => Err(s.clone()),
}
}