@@ -8,7 +8,6 @@ module Compile
88
99import qualified Data.Map as Map
1010import qualified Data.Name as Name
11−import qualified Data.OneOrMore as OneOrMore
1211
1312import qualified AST.Source as Src
1413import qualified AST.Canonical as Can
@@ -21,7 +20,6 @@ import qualified Nitpick.PatternMatches as PatternMatches
2120import qualified Optimize.Module as Optimize
2221import qualified Reporting.Error as E
2322import qualified Reporting.Result as R
24−import qualified Reporting.Warning as W
2523import qualified Type.Constrain.Module as Type
2624import qualified Type.Solve as Type
2725
@@ -40,9 +38,8 @@ data Artifacts =
4038 }
4139
4240
43−compile :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either (OneOrMore.OneOrMore E.Error) Artifacts
41+compile :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Artifacts
4442compile pkg ifaces modul =
45− snd $ R.run $
4643 do canonical <- canonicalize pkg ifaces modul
4744 annotations <- typeCheck canonical
4845 () <- nitpick canonical
@@ -54,31 +51,33 @@ compile pkg ifaces modul =
5451-- PHASES
5552
5653
57−canonicalize :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> R.Result i [W.Warning] E.Error Can.Module
54+canonicalize :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Can.Module
5855canonicalize pkg ifaces modul =
59− R.mapError E.Canonicalize $ Canonicalize.canonicalize pkg ifaces modul
56+ snd $ R.run E.BadNames $
57+ Canonicalize.canonicalize pkg ifaces modul
6058
6159
62−typeCheck :: Can.Module -> R.Result i w E.Error (Map.Map Name.Name Can.Annotation)
60+typeCheck :: Can.Module -> Either E.Error (Map.Map Name.Name Can.Annotation)
6361typeCheck canonical =
6462 case unsafePerformIO (Type.run =<< Type.constrain canonical) of
6563 Right annotations ->
66− R.ok annotations
64+ Right annotations
6765
6866 Left errors ->
69− R.throw (E.Type errors)
67+ Left (E.BadTypes errors)
7068
7169
72−nitpick :: Can.Module -> R.Result i w E.Error ()
70+nitpick :: Can.Module -> Either E.Error ()
7371nitpick canonical =
7472 case PatternMatches.check canonical of
7573 Right () ->
76− R.ok ()
74+ Right ()
7775
7876 Left errors ->
79− R.throw (E.Pattern errors)
77+ Left (E.BadPatterns errors)
8078
8179
82−optimize :: Map.Map Name.Name Can.Annotation -> Can.Module -> R.Result i [W.Warning] E.Error Opt.LocalGraph
80+optimize :: Map.Map Name.Name Can.Annotation -> Can.Module -> Either E.Error Opt.LocalGraph
8381optimize annotations canonical =
84− R.mapError E.Main $ Optimize.optimize annotations canonical
82+ snd $ R.run E.BadMains $
83+ Optimize.optimize annotations canonical