1{-# OPTIONS_GHC -Wall #-}
5 , compile, Context(..), Result(..)
6 , Dealiaser, dummyDealiaser
7 , Error, errorToString, errorToJson, printError
8 , Warning, warningToString, warningToJson, printWarning
11import qualified Data.Aeson as Json
12import qualified Data.Map as Map
14import qualified AST.Module as Module
15import qualified Compile
16import qualified Docs.Check as Docs
17import qualified Elm.Compiler.Version
18import qualified Elm.Compiler.Module as PublicModule
19import qualified Elm.Docs as Docs
20import qualified Elm.Package as Package
21import qualified Generate.JavaScript as JS
22import qualified Optimize
23import qualified Parse.Module as Parse
24import qualified Parse.Parse as Parse
25import qualified Reporting.Annotation as A
26import qualified Reporting.Error as Error
27import qualified Reporting.PrettyPrint as P
28import qualified Reporting.Result as Result
29import qualified Reporting.Warning as Warning
34version :: Package.Version
36 Elm.Compiler.Version.version
43 -> Either [Error] (PublicModule.Name, [PublicModule.Name])
44parseDependencies sourceCode =
46 (Result.Result _warnings rawResult) =
47 Parse.parse sourceCode Parse.header
51 Left $ map (Error . A.map Error.Syntax) msgs
53 Result.Ok (Module.Header name _docs _exports imports) ->
55 ( PublicModule.Name name
56 , map (PublicModule.Name . fst . A.drop) imports
62{-| Compiles Elm source code to JavaScript. -}
66 -> PublicModule.Interfaces
67 -> (Dealiaser, [Warning], Either [Error] Result)
69compile context source interfaces =
71 (Context packageName isRoot isExposed dependencies) =
74 (Result.Result (dealiaser, warnings) rawResult) =
75 do modul <- Compile.compile packageName isRoot dependencies interfaces source
76 docs <- docsGen isExposed modul
78 let interface = Module.toInterface packageName modul
79 let optModule = Optimize.optimize modul
80 let javascript = JS.generate optModule
82 return (Result docs interface javascript)
84 ( maybe dummyDealiaser Dealiaser dealiaser
85 , map Warning warnings
86 , Result.destruct (Left . map Error) Right rawResult
91 { _packageName :: Package.Name
94 , _dependencies :: [PublicModule.Canonical]
99 { _docs :: Maybe Docs.Documentation
100 , _interface :: PublicModule.Interface
107 -> Module.CanonicalModule
108 -> Result.Result w Error.Error (Maybe Docs.Documentation)
109docsGen isExposed modul =
110 if not isExposed then
115 Docs.check (Module.exports modul) (Module.docs modul)
118 PublicModule.Name (PublicModule._module (Module.name modul))
121 Docs.fromCheckedDocs name checked
123 (Just . toDocs) `fmap` Result.mapError Error.Docs getChecked
129 Dealiaser P.Dealiaser
132dummyDealiaser :: Dealiaser
140 Error (A.Located Error.Error)
143errorToString :: Dealiaser -> String -> String -> Error -> String
144errorToString (Dealiaser dealiaser) location source (Error err) =
145 Error.toString dealiaser location source err
148printError :: Dealiaser -> String -> String -> Error -> IO ()
149printError (Dealiaser dealiaser) location source (Error err) =
150 Error.print dealiaser location source err
153errorToJson :: Dealiaser -> String -> Error -> Json.Value
154errorToJson (Dealiaser dealiaser) location (Error err) =
155 Error.toJson dealiaser location err
161 Warning (A.Located Warning.Warning)
164warningToString :: Dealiaser -> String -> String -> Warning -> String
165warningToString (Dealiaser dealiaser) location source (Warning err) =
166 Warning.toString dealiaser location source err
169printWarning :: Dealiaser -> String -> String -> Warning -> IO ()
170printWarning (Dealiaser dealiaser) location source (Warning err) =
171 Warning.print dealiaser location source err
174warningToJson :: Dealiaser -> String -> Warning -> Json.Value
175warningToJson (Dealiaser dealiaser) location (Warning err) =
176 Warning.toJson dealiaser location err
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list