@@ -1,119 +0,0 @@
1−{-# OPTIONS_GHC -Wall #-}
8−import Control.Monad (liftM2, liftM4)
12−import qualified Deps.Verify as Verify
13−import qualified Elm.Interface as I
14−import Elm.Package (Name, Version)
15−import qualified Elm.Project.Json as Project
16−import qualified Elm.Project.Constraint as Con
17−import qualified Elm.Project.Summary as Summary
18−import qualified File.IO as IO
19−import qualified Reporting.Task as Task
20−import qualified Stuff.Paths as Path
27−verify :: FilePath -> Project.Project -> Task.Task Summary.Summary
29− do exists <- IO.exists Path.summary
32− do (MiniSummary deps exposed ifaces graph) <- IO.readBinary Path.summary
33− if isValidMiniSummary deps project
35− return (Summary.Summary root project exposed ifaces graph)
37− do IO.remove Path.summary
38− cacheSummary root project
40− cacheSummary root project
43−cacheSummary :: FilePath -> Project.Project -> Task.Task Summary.Summary
44−cacheSummary root project =
45− do summary@(Summary.Summary _ _ exposed ifaces graph) <- Verify.verify root project
46− IO.writeBinary Path.summary (MiniSummary (getDeps project) exposed ifaces graph)
56− { _deps :: ProjectDeps
57− , _exposed :: Summary.ExposedModules
58− , _ifaces :: I.Interfaces
59− , _depsGraph :: Summary.DepsGraph
64− = App (Map Name Version) (Map Name Version) (Map Name Version) (Map Name Version)
65− | Pkg (Map Name Con.Constraint) (Map Name Con.Constraint)
68−getDeps :: Project.Project -> ProjectDeps
71− Project.App (Project.AppInfo _ _ depsDirect depsTrans testDirect testTrans) ->
72− App depsDirect depsTrans testDirect testTrans
74− Project.Pkg (Project.PkgInfo _ _ _ _ _ direct test _) ->
78−isValidMiniSummary :: ProjectDeps -> Project.Project -> Bool
79−isValidMiniSummary deps project =
86− Project.App (Project.AppInfo _ _ a2 b2 c2 d2) ->
87− a == a2 && b == b2 && c == c2 && d == d2
91− Project.Pkg (Project.PkgInfo _ _ _ _ _ a2 b2 _) ->
102−instance Binary MiniSummary where
103− get = liftM4 MiniSummary get get get get
104− put (MiniSummary a b c d) = put a >> put b >> put c >> put d
108−instance Binary ProjectDeps where
111− App a b c d -> putWord8 0 >> put a >> put b >> put c >> put d
112− Pkg a b -> putWord8 1 >> put a >> put b
117− 0 -> liftM4 App get get get get
118− 1 -> liftM2 Pkg get get
119− _ -> error "binary encoding of ProjectDeps was corrupted"