on master help sign in
Use new error definition in Compile.compile
e07f164Evan Czaplicki
compiler/src/Compile.hs+13−14
@@ -8,7 +8,6 @@ module Compile
8
8
9import qualified Data.Map as Map
9import qualified Data.Map as Map
10import qualified Data.Name as Name
10import qualified Data.Name as Name
11−import qualified Data.OneOrMore as OneOrMore
12
11
13import qualified AST.Source as Src
12import qualified AST.Source as Src
14import qualified AST.Canonical as Can
13import qualified AST.Canonical as Can
@@ -21,7 +20,6 @@ import qualified Nitpick.PatternMatches as PatternMatches
21import qualified Optimize.Module as Optimize
20import qualified Optimize.Module as Optimize
22import qualified Reporting.Error as E
21import qualified Reporting.Error as E
23import qualified Reporting.Result as R
22import qualified Reporting.Result as R
24−import qualified Reporting.Warning as W
25import qualified Type.Constrain.Module as Type
23import qualified Type.Constrain.Module as Type
26import qualified Type.Solve as Type
24import qualified Type.Solve as Type
27
25
@@ -40,9 +38,8 @@ data Artifacts =
40 }
38 }
41
39
42
40
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
44compile pkg ifaces modul =
42compile pkg ifaces modul =
45− snd $ R.run $
46 do canonical <- canonicalize pkg ifaces modul
43 do canonical <- canonicalize pkg ifaces modul
47 annotations <- typeCheck canonical
44 annotations <- typeCheck canonical
48 () <- nitpick canonical
45 () <- nitpick canonical
@@ -54,31 +51,33 @@ compile pkg ifaces modul =
54-- PHASES
51-- PHASES
55
52
56
53
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
58canonicalize pkg ifaces modul =
55canonicalize pkg ifaces modul =
56+ snd $ R.run E.BadNames $
59− R.mapError E.Canonicalize $ Canonicalize.canonicalize pkg ifaces modul
57+ Canonicalize.canonicalize pkg ifaces modul
60
58
61
59
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)
63typeCheck canonical =
61typeCheck canonical =
64 case unsafePerformIO (Type.run =<< Type.constrain canonical) of
62 case unsafePerformIO (Type.run =<< Type.constrain canonical) of
65 Right annotations ->
63 Right annotations ->
66− R.ok annotations
64+ Right annotations
67
65
68 Left errors ->
66 Left errors ->
69− R.throw (E.Type errors)
67+ Left (E.BadTypes errors)
70
68
71
69
72−nitpick :: Can.Module -> R.Result i w E.Error ()
70+nitpick :: Can.Module -> Either E.Error ()
73nitpick canonical =
71nitpick canonical =
74 case PatternMatches.check canonical of
72 case PatternMatches.check canonical of
75 Right () ->
73 Right () ->
76− R.ok ()
74+ Right ()
77
75
78 Left errors ->
76 Left errors ->
79− R.throw (E.Pattern errors)
77+ Left (E.BadPatterns errors)
80
78
81
79
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
83optimize annotations canonical =
81optimize annotations canonical =
82+ snd $ R.run E.BadMains $
84− R.mapError E.Main $ Optimize.optimize annotations canonical
83+ Optimize.optimize annotations canonical