about summary refs log tree commit diff
path: root/src/Typecheck.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Typecheck.hs')
-rw-r--r--src/Typecheck.hs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/Typecheck.hs b/src/Typecheck.hs
index d8b8128..02b9871 100644
--- a/src/Typecheck.hs
+++ b/src/Typecheck.hs
@@ -19,7 +19,11 @@ inferExpr :: Expr -> Environment -> Maybe Typ
 inferExpr (Var name) env = lookup name env
 inferExpr (IntLit _) _ = Just TInt
 inferExpr (Record _) _ = undefined
-inferExpr (Variant _ _) _ = undefined
+inferExpr (Variant t v e) env = do
+  ts <- assertVar t
+  tt <- lookup v ts
+  checkExpr e env tt
+  return t
 inferExpr (Add e1 e2) env = do
   checkExpr e1 env TInt
   checkExpr e1 env TInt