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 AST.Module.Name as ModuleName
16import qualified Compile
17import qualified Docs.Check as Docs
18import qualified Elm.Compiler.Version
19import qualified Elm.Compiler.Module as PublicModule
20import qualified Elm.Docs as Docs
21import qualified Elm.Package as Package
22import qualified Generate.JavaScript as JS
23import qualified Optimize
24import qualified Parse.Module as Parse
25import qualified Parse.Parse as Parse
26import qualified Reporting.Annotation as A
27import qualified Reporting.Error as Error
28import qualified Reporting.PrettyPrint as P
29import qualified Reporting.Result as Result
30import qualified Reporting.Warning as Warning
35version :: Package.Version
37 Elm.Compiler.Version.version
44 -> Either [Error] (PublicModule.Name, [PublicModule.Name])
45parseDependencies sourceCode =
47 (Result.Result _warnings rawResult) =
48 Parse.parse sourceCode Parse.header
52 Left $ map (Error . A.map Error.Syntax) msgs
54 Result.Ok (Module.Header name _docs _exports imports) ->
56 ( PublicModule.Name name
57 , map (PublicModule.Name . fst . A.drop) imports
63{-| Compiles Elm source code to JavaScript. -}
67 -> PublicModule.Interfaces
68 -> (Dealiaser, [Warning], Either [Error] Result)
70compile context source interfaces =
72 (Context packageName isRoot isExposed dependencies) =
75 (Result.Result (dealiaser, warnings) rawResult) =
76 do modul <- Compile.compile packageName isRoot dependencies interfaces source
77 docs <- docsGen isExposed modul
79 let interface = Module.toInterface packageName modul
80 let optModule = Optimize.optimize modul
81 let javascript = JS.generate optModule
83 return (Result docs interface javascript)
85 ( maybe dummyDealiaser Dealiaser dealiaser
86 , map Warning warnings
87 , Result.destruct (Left . map Error) Right rawResult
92 { _packageName :: Package.Name
95 , _dependencies :: [PublicModule.CanonicalName]
100 { _docs :: Maybe Docs.Documentation
101 , _interface :: PublicModule.Interface
108 -> Module.CanonicalModule
109 -> Result.Result w Error.Error (Maybe Docs.Documentation)
110docsGen isExposed modul =
111 if not isExposed then
116 Docs.check (Module.exports modul) (Module.docs modul)
119 PublicModule.Name (ModuleName._module (Module.name modul))
122 Docs.fromCheckedDocs name checked
124 (Just . toDocs) `fmap` Result.mapError Error.Docs getChecked
130 Dealiaser P.Dealiaser
133dummyDealiaser :: Dealiaser
141 Error (A.Located Error.Error)
144errorToString :: Dealiaser -> String -> String -> Error -> String
145errorToString (Dealiaser dealiaser) location source (Error err) =
146 Error.toString dealiaser location source err
149printError :: Dealiaser -> String -> String -> Error -> IO ()
150printError (Dealiaser dealiaser) location source (Error err) =
151 Error.print dealiaser location source err
154errorToJson :: Dealiaser -> String -> Error -> Json.Value
155errorToJson (Dealiaser dealiaser) location (Error err) =
156 Error.toJson dealiaser location err
162 Warning (A.Located Warning.Warning)
165warningToString :: Dealiaser -> String -> String -> Warning -> String
166warningToString (Dealiaser dealiaser) location source (Warning err) =
167 Warning.toString dealiaser location source err
170printWarning :: Dealiaser -> String -> String -> Warning -> IO ()
171printWarning (Dealiaser dealiaser) location source (Warning err) =
172 Warning.print dealiaser location source err
175warningToJson :: Dealiaser -> String -> Warning -> Json.Value
176warningToJson (Dealiaser dealiaser) location (Warning err) =
177 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