@@ -325,11 +325,8 @@ infer' app@(App _ _) = do
325 checkFunctionApplications ft argss ret
325 checkFunctionApplications ft argss ret
326 return ret
326 return ret
327infer' (Var var@(Qualified mp name)) = do
327infer' (Var var@(Qualified mp name)) = do
328− env <- getEnv
328+ ty <- lookupVariable var
329− modulePath <- checkModulePath `fmap` get
330− case M.lookup (qualify modulePath var) (names env) of
331− Nothing -> throwError $ show var ++ " is undefined"
332− Just (ty, _) -> replaceAllTypeSynonyms ty
329+ replaceAllTypeSynonyms ty
333infer' (Block ss) = do
330infer' (Block ss) = do
334 ret <- fresh
331 ret <- fresh
335 (allCodePathsReturn, _) <- checkBlock M.empty ret ss
332 (allCodePathsReturn, _) <- checkBlock M.empty ret ss
@@ -613,13 +610,9 @@ check' app@(App _ _) ret = do
613 ft <- infer f
610 ft <- infer f
614 checkFunctionApplications ft argss ret
611 checkFunctionApplications ft argss ret
615check' v@(Var var@(Qualified mp name)) ty = do
612check' v@(Var var@(Qualified mp name)) ty = do
616− env <- getEnv
613+ ty1 <- lookupVariable var
617− modulePath <- checkModulePath <$> get
618− case M.lookup (qualify modulePath var) (names env) of
619− Nothing -> throwError $ show var ++ " is undefined"
621− repl <- replaceAllTypeSynonyms ty1
614+ repl <- replaceAllTypeSynonyms ty1
622− repl `subsumes` ty
615+ repl `subsumes` ty
623check' (TypedValue val ty1) ty2 = do
616check' (TypedValue val ty1) ty2 = do
624 kind <- liftCheck $ kindOf ty1
617 kind <- liftCheck $ kindOf ty1
625 guardWith ("Expected type of kind *, was " ++ prettyPrintKind kind) $ kind == Star
618 guardWith ("Expected type of kind *, was " ++ prettyPrintKind kind) $ kind == Star