Skip to content

Commit

Permalink
Proper type checking of partial functions in verifier
Browse files Browse the repository at this point in the history
  • Loading branch information
rockofox committed May 4, 2024
1 parent 4f21b71 commit bfb5ede
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/Verifier.hs
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,14 @@ typeOf' (Var name _) = do
matchingBinding <- findMatchingBinding name
-- when (isNothing matchingBinding) $ error $ "Could not find relevant binding for " ++ name
return $ maybe Unknown ttype matchingBinding
typeOf' (FuncCall name _ _) = do
typeOf' (FuncCall name args _) = do
matchingBinding <- findMatchingBinding name
-- when (isNothing matchingBinding) $ error $ "Could not find relevant binding for " ++ name
return $ maybe Unknown ttype matchingBinding
let actualArgNum = length args
let formalArgNum = length (fromJust matchingBinding).args
if actualArgNum == formalArgNum
then return $ maybe Unknown ttype matchingBinding
else return Fn{args = take actualArgNum (fromJust matchingBinding).args, ret = (fromJust matchingBinding).args !! actualArgNum}
typeOf' (Add a _) = typeOf' a
typeOf' (Sub a _) = typeOf' a
typeOf' (Mul a _) = typeOf' a
Expand Down

0 comments on commit bfb5ede

Please sign in to comment.