@@ -20,6 +20,7 @@ import qualified Nitpick.PatternMatches as PatternMatches
20import qualified Optimize.Module as Optimize
20import qualified Optimize.Module as Optimize
21import qualified Reporting.Error as E
21import qualified Reporting.Error as E
22import qualified Reporting.Result as R
22import qualified Reporting.Result as R
23+import qualified Reporting.Render.Type.Localizer as Localizer
23import qualified Type.Constrain.Module as Type
24import qualified Type.Constrain.Module as Type
24import qualified Type.Solve as Type
25import qualified Type.Solve as Type
@@ -41,9 +42,9 @@ data Artifacts =
41compile :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Artifacts
42compile :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Artifacts
42compile pkg ifaces modul =
43compile pkg ifaces modul =
43 do canonical <- canonicalize pkg ifaces modul
44 do canonical <- canonicalize pkg ifaces modul
44− annotations <- typeCheck canonical
45+ annotations <- typeCheck modul canonical
45 () <- nitpick canonical
46 () <- nitpick canonical
46− objects <- optimize annotations canonical
47+ objects <- optimize modul annotations canonical
47 return (Artifacts canonical annotations objects)
48 return (Artifacts canonical annotations objects)
@@ -53,18 +54,22 @@ compile pkg ifaces modul =
54canonicalize :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Can.Module
55canonicalize :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Can.Module
55canonicalize pkg ifaces modul =
56canonicalize pkg ifaces modul =
56− snd $ R.run E.BadNames $
57− Canonicalize.canonicalize pkg ifaces modul
57+ case snd $ R.run $ Canonicalize.canonicalize pkg ifaces modul of
62+ Left $ E.BadNames errors
60−typeCheck :: Can.Module -> Either E.Error (Map.Map Name.Name Can.Annotation)
65+typeCheck :: Src.Module -> Can.Module -> Either E.Error (Map.Map Name.Name Can.Annotation)
61−typeCheck canonical =
66+typeCheck modul canonical =
62 case unsafePerformIO (Type.run =<< Type.constrain canonical) of
67 case unsafePerformIO (Type.run =<< Type.constrain canonical) of
63 Right annotations ->
68 Right annotations ->
64 Right annotations
69 Right annotations
66 Left errors ->
71 Left errors ->
67− Left (E.BadTypes errors)
72+ Left (E.BadTypes (Localizer.fromModule modul) errors)
70nitpick :: Can.Module -> Either E.Error ()
75nitpick :: Can.Module -> Either E.Error ()
@@ -77,7 +82,11 @@ nitpick canonical =
77 Left (E.BadPatterns errors)
82 Left (E.BadPatterns errors)
80−optimize :: Map.Map Name.Name Can.Annotation -> Can.Module -> Either E.Error Opt.LocalGraph
85+optimize :: Src.Module -> Map.Map Name.Name Can.Annotation -> Can.Module -> Either E.Error Opt.LocalGraph
81−optimize annotations canonical =
86+optimize modul annotations canonical =
82− snd $ R.run E.BadMains $
83− Optimize.optimize annotations canonical
87+ case snd $ R.run $ Optimize.optimize annotations canonical of
92+ Left (E.BadMains (Localizer.fromModule modul) errors)