@@ -27,7 +27,6 @@ import Language.PureScript.TypeChecker.Synonyms as T
2727
2828import Data.Maybe
2929import Data.List (nub , (\\) , find , intercalate )
30- import Data.Monoid ((<>) )
3130import Data.Foldable (for_ )
3231import qualified Data.Map as M
3332
@@ -47,7 +46,7 @@ addDataType moduleName dtype name args dctors ctorKind = do
4746 env <- getEnv
4847 putEnv $ env { types = M. insert (Qualified (Just moduleName) name) (ctorKind, DataType args dctors) (types env) }
4948 forM_ dctors $ \ (dctor, tys) ->
50- rethrow (strMsg (" Error in data constructor " ++ show dctor) <> ) $
49+ rethrow (mkCompileError (" Error in data constructor " ++ show dctor) Nothing `combineErrors` ) $
5150 addDataConstructor moduleName dtype name (map fst args) dctor tys
5251
5352addDataConstructor :: ModuleName -> DataDeclType -> ProperName -> [String ] -> ProperName -> [Type ] -> Check ()
@@ -134,7 +133,7 @@ typeCheckAll mainModuleName moduleName exps = go
134133 go :: [Declaration ] -> Check [Declaration ]
135134 go [] = return []
136135 go (DataDeclaration dtype name args dctors : rest) = do
137- rethrow (strMsg (" Error in type constructor " ++ show name) <> ) $ do
136+ rethrow (mkCompileError (" Error in type constructor " ++ show name) Nothing `combineErrors` ) $ do
138137 when (dtype == Newtype ) $ checkNewtype dctors
139138 checkDuplicateTypeArguments $ map fst args
140139 ctorKind <- kindsOf True moduleName name args (concatMap snd dctors)
@@ -148,7 +147,7 @@ typeCheckAll mainModuleName moduleName exps = go
148147 checkNewtype [(_, _)] = throwError . strMsg $ " newtypes constructors must have a single argument"
149148 checkNewtype _ = throwError . strMsg $ " newtypes must have a single constructor"
150149 go (d@ (DataBindingGroupDeclaration tys) : rest) = do
151- rethrow (strMsg " Error in data binding group" <> ) $ do
150+ rethrow (mkCompileError " Error in data binding group" Nothing `combineErrors` ) $ do
152151 let syns = mapMaybe toTypeSynonym tys
153152 let dataDecls = mapMaybe toDataDecl tys
154153 (syn_ks, data_ks) <- kindsOfAll moduleName syns (map (\ (_, name, args, dctors) -> (name, args, concatMap snd dctors)) dataDecls)
@@ -170,7 +169,7 @@ typeCheckAll mainModuleName moduleName exps = go
170169 toDataDecl (PositionedDeclaration _ _ d') = toDataDecl d'
171170 toDataDecl _ = Nothing
172171 go (TypeSynonymDeclaration name args ty : rest) = do
173- rethrow (strMsg (" Error in type synonym " ++ show name) <> ) $ do
172+ rethrow (mkCompileError (" Error in type synonym " ++ show name) Nothing `combineErrors` ) $ do
174173 checkDuplicateTypeArguments $ map fst args
175174 kind <- kindsOf False moduleName name args [ty]
176175 let args' = args `withKinds` kind
@@ -179,7 +178,7 @@ typeCheckAll mainModuleName moduleName exps = go
179178 return $ TypeSynonymDeclaration name args ty : ds
180179 go (TypeDeclaration _ _ : _) = error " Type declarations should have been removed"
181180 go (ValueDeclaration name nameKind [] (Right val) : rest) = do
182- d <- rethrow (strMsg (" Error in declaration " ++ show name) <> ) $ do
181+ d <- rethrow (mkCompileError (" Error in declaration " ++ show name) Nothing `combineErrors` ) $ do
183182 valueIsNotDefined moduleName name
184183 [(_, (val', ty))] <- typesOf mainModuleName moduleName [(name, val)]
185184 addValue moduleName name ty nameKind
@@ -188,7 +187,7 @@ typeCheckAll mainModuleName moduleName exps = go
188187 return $ d : ds
189188 go (ValueDeclaration {} : _) = error " Binders were not desugared"
190189 go (BindingGroupDeclaration vals : rest) = do
191- d <- rethrow (strMsg (" Error in binding group " ++ show (map (\ (ident, _, _) -> ident) vals)) <> ) $ do
190+ d <- rethrow (mkCompileError (" Error in binding group " ++ show (map (\ (ident, _, _) -> ident) vals)) Nothing `combineErrors` ) $ do
192191 forM_ (map (\ (ident, _, _) -> ident) vals) $ \ name ->
193192 valueIsNotDefined moduleName name
194193 tys <- typesOf mainModuleName moduleName $ map (\ (ident, _, ty) -> (ident, ty)) vals
@@ -208,7 +207,7 @@ typeCheckAll mainModuleName moduleName exps = go
208207 ds <- go rest
209208 return $ d : ds
210209 go (d@ (ExternDeclaration importTy name _ ty) : rest) = do
211- rethrow (strMsg (" Error in foreign import declaration " ++ show name) <> ) $ do
210+ rethrow (mkCompileError (" Error in foreign import declaration " ++ show name) Nothing `combineErrors` ) $ do
212211 env <- getEnv
213212 kind <- kindOf moduleName ty
214213 guardWith (strMsg " Expected kind *" ) $ kind == Star
0 commit comments