@@ -30,7 +30,6 @@ effectTypes :: TS.Env -> ErrorT [P.Doc] IO (Map.Map String ST.CanonicalType)
3030effectTypes environment =
3131 do environment' <- liftIO $ Traverse.traverse TT.toSrcType environment
3232 mainCheck environment'
33− performCheck environment'
3433 return environment'
3534
3635
@@ -111,39 +110,6 @@ badMainMessage typeOfMain =
111110 ]
112111
113112
114−-- PERFORM TYPE
115−
116−performCheck
117− :: (Monad m)
118− => Map.Map String ST.CanonicalType
119− -> ErrorT [P.Doc] m ()
120−performCheck env =
121− let check (name, tipe) =
122− case Var.fromEffectName name of
123− Nothing ->
124− return ()
125−
126− Just lineNumber ->
127− case ST.deepDealias tipe of
128− ST.App (ST.Type task) [_, _]
129− | Var.isTask task ->
130− return ()
131− _ ->
132− throwError [ badPerformMessage lineNumber tipe ]
133− in
134− mapM_ check (Map.toList env)
135−
136−
137−badPerformMessage :: String -> ST.CanonicalType -> P.Doc
138−badPerformMessage lineNumber tipe =
139− P.vcat
140− [ P.text $ "Type Error: the 'perform' declaration on line " ++ lineNumber
141− , P.text "It must have type Task, but instead it has type:\n"
142− , P.nest 4 (PP.pretty tipe)
143− , P.text " "
144− ]
145−
146−
147113-- INFINITE TYPES
148114
149115occurs :: (String, TT.Variable) -> StateT TS.SolverState IO ()