From a33620210a161a20b60a138a0b984a5336a45f2d Mon Sep 17 00:00:00 2001 From: "Juan J. Martinez" Date: Sun, 4 Sep 2022 08:21:31 +0100 Subject: Type-checking variable declaration --- src/Compiler.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/Compiler.hs b/src/Compiler.hs index f36083c..40e5f73 100644 --- a/src/Compiler.hs +++ b/src/Compiler.hs @@ -153,7 +153,16 @@ compile x = do if not (definedType typ) then Error UndefinedType ("undefined type in variable declaration \"" ++ ident ++ "\"") pos : errs else errs - -- TODO: typecheck value + -- type-check value + vt <- compile val + errs <- case vt of + Right (Just t) -> + if t == typ + then return $ errs + else return $ (Error TypeError ("value type mismatch\n found: " ++ show t ++ "\n expected: " ++ show typ) pos) : errs + _ -> do + (_, errs) <- get -- error resolving value + return $ errs put (ev, errs) return $ Right $ Just typ (A.Return value pos) -> do -- cgit v1.2.3