1{-# OPTIONS_GHC -Wall -fno-warn-unused-do-bind #-}
9import qualified Data.Map as Map
10import qualified Data.Name as Name
12import qualified AST.Source as Src
13import qualified AST.Canonical as Can
14import qualified AST.Optimized as Opt
15import qualified Canonicalize.Module as Canonicalize
16import qualified Elm.Interface as I
17import qualified Elm.ModuleName as ModuleName
18import qualified Elm.Package as Pkg
19import qualified Nitpick.PatternMatches as PatternMatches
20import qualified Optimize.Module as Optimize
21import qualified Reporting.Error as E
22import qualified Reporting.Result as R
23import qualified Reporting.Render.Type.Localizer as Localizer
24import qualified Type.Constrain.Module as Type
25import qualified Type.Solve as Type
27import System.IO.Unsafe (unsafePerformIO)
36 { _modul :: Can.Module
37 , _types :: Map.Map Name.Name Can.Annotation
38 , _graph :: Opt.LocalGraph
42compile :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Artifacts
43compile pkg ifaces modul =
44 do canonical <- canonicalize pkg ifaces modul
45 annotations <- typeCheck modul canonical
46 () <- nitpick canonical
47 objects <- optimize modul annotations canonical
48 return (Artifacts canonical annotations objects)
55canonicalize :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Either E.Error Can.Module
56canonicalize pkg ifaces modul =
57 case snd $ R.run $ Canonicalize.canonicalize pkg ifaces modul of
62 Left $ E.BadNames errors
65typeCheck :: Src.Module -> Can.Module -> Either E.Error (Map.Map Name.Name Can.Annotation)
66typeCheck modul canonical =
67 case unsafePerformIO (Type.run =<< Type.constrain canonical) of
72 Left (E.BadTypes (Localizer.fromModule modul) errors)
75nitpick :: Can.Module -> Either E.Error ()
77 case PatternMatches.check canonical of
82 Left (E.BadPatterns errors)
85optimize :: Src.Module -> Map.Map Name.Name Can.Annotation -> Can.Module -> Either E.Error Opt.LocalGraph
86optimize modul annotations canonical =
87 case snd $ R.run $ Optimize.optimize annotations canonical of
92 Left (E.BadMains (Localizer.fromModule modul) errors)
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