on ba4c3df help sign in
elk/src/Elm/Compiler.hs
106 lines 2.4 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2module Elm.Compiler
3 ( version
4 , Context(..)
5 , Compile.Artifacts(..)
6 , compile
7 , Localizer
8 , dummyLocalizer
9 , Error.Error
10 , errorToDoc
11 , errorToJson
12 , Warning.Warning
13 , warningToDoc
14 , warningToJson
15 )
16 where
18import qualified Data.Aeson as Json
19import qualified Data.ByteString as BS
20import qualified Data.Map as Map
21import qualified Data.Text as Text
22import Text.PrettyPrint.ANSI.Leijen (Doc)
24import qualified Compile
25import qualified Elm.Compiler.Module as M
26import qualified Elm.Compiler.Version
27import qualified Elm.Package as Pkg
28import qualified Reporting.Error as Error
29import qualified Reporting.Render.Type as RenderType
30import qualified Reporting.Result as Result
31import qualified Reporting.Warning as Warning
35-- VERSION
38version :: Pkg.Version
39version =
40 Elm.Compiler.Version.version
44-- COMPILE
47data Context =
48 Context
49 { _package :: Pkg.Name
50 , _exposed :: Bool
51 , _imports :: Map.Map M.Raw M.Canonical
52 , _interfaces :: M.Interfaces
53 }
56compile :: Context -> BS.ByteString -> (Localizer, [Warning.Warning], Either [Error.Error] Compile.Artifacts)
57compile (Context pkg exposed importDict interfaces) source =
58 let
59 docsFlag =
60 if exposed then Compile.YesDocs else Compile.NoDocs
62 (warnings, errorOrArtifacts) =
63 Result.run $ Compile.compile docsFlag pkg importDict interfaces source
64 in
65 ( dummyLocalizer, warnings, errorOrArtifacts )
69-- DEALIASER
72newtype Localizer =
73 Localizer RenderType.Localizer
76dummyLocalizer :: Localizer
77dummyLocalizer =
78 Localizer Map.empty
82-- ERRORS
85errorToDoc :: Localizer -> String -> Text.Text -> Error.Error -> Doc
86errorToDoc (Localizer localizer) location source err =
87 error "TODO Report.toDoc" location (Error.toReport localizer err) source
90errorToJson :: Localizer -> String -> Error.Error -> Json.Value
91errorToJson (Localizer localizer) location err =
92 error "TODO Error.toJson" localizer location err
96-- WARNINGS
99warningToDoc :: Localizer -> String -> Text.Text -> Warning.Warning -> Doc
100warningToDoc (Localizer localizer) location source warning =
101 error "TODO Report.toDoc" location (Warning.toReport localizer warning) source
104warningToJson :: Localizer -> String -> Warning.Warning -> Json.Value
105warningToJson (Localizer localizer) location warning =
106 error "TODO Warning.toJson" localizer location warning