aboutsummaryrefslogtreecommitdiff
path: root/src/type/mod.rs
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-19 13:55:05 +0300
committerJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-19 13:55:05 +0300
commita70dcaa949f41c585f9aea5e79f2550053d8e857 (patch)
tree9366f0b1e026c009708ebc243d006a79cbf452c9 /src/type/mod.rs
parentd4d6e972650370d529363f7db3946e58bdbd7bca (diff)
downloadmyslip-a70dcaa949f41c585f9aea5e79f2550053d8e857.tar.gz
myslip-a70dcaa949f41c585f9aea5e79f2550053d8e857.zip
test: added boilerplate and tests for coproduct parsing, type checking and evaluation
Diffstat (limited to 'src/type/mod.rs')
-rw-r--r--src/type/mod.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/type/mod.rs b/src/type/mod.rs
index bfe0055..c726001 100644
--- a/src/type/mod.rs
+++ b/src/type/mod.rs
@@ -31,6 +31,8 @@ pub enum Type {
VecOf(Box<Type>),
VecType, // constructor
+ SumType(Box<Type>, Box<Type>),
+
LetType,
/// Type for generics
@@ -156,7 +158,8 @@ impl Type {
LetType => Ok(()),
NilType => Ok(()),
TypeLit => Ok(()),
- Arrow(a, b) => b.is_concrete().and_then(|_ok| a.is_concrete()),
+ Arrow(a, b) => b.is_concrete().and_then(|_ok| a.is_concrete()),
+ SumType(a, b) => b.is_concrete().and_then(|_ok| a.is_concrete()),
List(v) => {
let mut res = Ok(());
for t in v {