on master help sign in
Make sure all interfaces are available for --debug
7aaee62Evan Czaplicki
builder/src/Elm/Project.hs+1−1
@@ -63,7 +63,7 @@ compile mode target maybeOutput docs summary@(Summary.Summary root project _ _ _
63 answers <- Compile.compile project docs ifaces dirty
63 answers <- Compile.compile project docs ifaces dirty
64 results <- Artifacts.write root answers
64 results <- Artifacts.write root answers
65 _ <- traverse (Artifacts.writeDocs results) docs
65 _ <- traverse (Artifacts.writeDocs results) docs
66− Output.generate mode target maybeOutput summary graph
66+ Output.generate mode target maybeOutput summary graph results
67
67
68
68
69
69
builder/src/Generate/Output.hs+35−6
@@ -21,12 +21,14 @@ import qualified System.Directory as Dir
21import qualified System.FilePath as FP
21import qualified System.FilePath as FP
22import System.FilePath ((</>))
22import System.FilePath ((</>))
23
23
24+import qualified Elm.Compiler as Compiler
24import qualified Elm.Compiler.Module as Module
25import qualified Elm.Compiler.Module as Module
25import qualified Elm.Compiler.Objects as Obj
26import qualified Elm.Compiler.Objects as Obj
26import qualified Elm.Interface as I
27import qualified Elm.Interface as I
27import qualified Elm.Name as N
28import qualified Elm.Name as N
28import qualified Elm.Package as Pkg
29import qualified Elm.Package as Pkg
29
30
31+import qualified AST.Module.Name as ModuleName
30import qualified Elm.Project.Json as Project
32import qualified Elm.Project.Json as Project
31import qualified Elm.Project.Summary as Summary
33import qualified Elm.Project.Summary as Summary
32import qualified File.Args as Args
34import qualified File.Args as Args
@@ -50,8 +52,15 @@ import Terminal.Args (Parser(..))
50data Mode = Debug | Dev | Prod
52data Mode = Debug | Dev | Prod
51
53
52
54
53−generate :: Mode -> Mode.Target -> Maybe Output -> Summary.Summary -> Crawl.Result -> Task.Task ()
55+generate
56+ :: Mode
57+ -> Mode.Target
58+ -> Maybe Output
59+ -> Summary.Summary
60+ -> Crawl.Result
61+ -> Map.Map Module.Raw Compiler.Artifacts
62+ -> Task.Task ()
54−generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) =
63+generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) artifacts =
55 case args of
64 case args of
56 Args.Pkg _ ->
65 Args.Pkg _ ->
57 return ()
66 return ()
@@ -61,20 +70,40 @@ generate mode target maybeOutput summary graph@(Crawl.Graph args _ _ _ _) =
61
70
62 realMode <-
71 realMode <-
63 case mode of
72 case mode of
64− Debug -> return (Mode.debug target (error "TODO"))
73+ Debug ->
74+ return $ Mode.debug target (getInterfaces summary artifacts)
75+
76+ Dev ->
65− Dev -> return (Mode.dev target)
77+ return $ Mode.dev target
78+
66 Prod ->
79 Prod ->
67 do noDebugUses summary objectGraph
80 do noDebugUses summary objectGraph
68− return (Mode.prod target objectGraph)
81+ return $ Mode.prod target objectGraph
69
82
70 generateMonolith realMode maybeOutput summary objectGraph (name:names)
83 generateMonolith realMode maybeOutput summary objectGraph (name:names)
71
84
72
85
86+getInterfaces :: Summary.Summary -> Map.Map Module.Raw Compiler.Artifacts -> I.Interfaces
87+getInterfaces (Summary.Summary _ project _ interfaces _) artifacts =
88+ let
89+ pkg = Project.getName project
90+ addArtifact home (Compiler.Artifacts elmi _ _) ifaces =
91+ Map.insert (ModuleName.Canonical pkg home) elmi ifaces
92+ in
93+ Map.foldrWithKey addArtifact interfaces artifacts
94+
95+
73
96
74-- GENERATE MONOLITH
97-- GENERATE MONOLITH
75
98
76
99
77−generateMonolith :: Mode.Mode -> Maybe Output -> Summary.Summary -> Obj.Graph -> [Module.Raw] -> Task.Task ()
100+generateMonolith
101+ :: Mode.Mode
102+ -> Maybe Output
103+ -> Summary.Summary
104+ -> Obj.Graph
105+ -> [Module.Raw]
106+ -> Task.Task ()
78generateMonolith mode maybeOutput (Summary.Summary _ project _ _ _) graph rootNames =
107generateMonolith mode maybeOutput (Summary.Summary _ project _ _ _) graph rootNames =
79 do let pkg = Project.getName project
108 do let pkg = Project.getName project
80 let roots = map (Module.Canonical pkg) rootNames
109 let roots = map (Module.Canonical pkg) rootNames