on master help sign in
begin using Parse.Module.fromByteString API in Build.hs
commit6f3a47ef3a815fe588470be7d482983302fa7983 authorEvan Czaplicki <evancz@users.noreply.github.com> dateMon 29 Jul 2019, 16:07 (7 years ago) parentb33cf77
2 files changed+34−19
builder/src/Build.hs+33−19 compiler/src/Parse/Module.hs+1
builder/src/Build.hs+33−19
@@ -64,7 +64,7 @@ data Env =
6464 Env
6565 { _key :: Reporting.BKey
6666 , _root :: FilePath
67− , _pkg :: Pkg.Name
67+ , _project :: Parse.ProjectType
6868 , _srcDirs :: [FilePath]
6969 , _buildID :: Details.BuildID
7070 , _locals :: Map.Map ModuleName.Raw Details.Local
@@ -76,10 +76,10 @@ makeEnv :: Reporting.BKey -> FilePath -> Details.Details -> Env
7676makeEnv key root (Details.Details _ validOutline buildID locals foreigns _) =
7777 case validOutline of
7878 Details.ValidApp srcDirs ->
79− Env key root Pkg.dummyName (NE.toList srcDirs) buildID locals foreigns
79+ Env key root Parse.Application (NE.toList srcDirs) buildID locals foreigns
8080
8181 Details.ValidPkg pkg _ _ ->
82− Env key root pkg ["src"] buildID locals foreigns
82+ Env key root (Parse.Package pkg) ["src"] buildID locals foreigns
8383
8484
8585
@@ -239,7 +239,7 @@ crawlDeps env mvar deps blockedValue =
239239
240240
241241crawlModule :: Env -> MVar StatusDict -> DocsNeed -> ModuleName.Raw -> IO Status
242−crawlModule env@(Env _ root pkg srcDirs buildID locals foreigns) mvar docsNeed name =
242+crawlModule env@(Env _ root projectType srcDirs buildID locals foreigns) mvar docsNeed name =
243243 do let fileName = ModuleName.toFilePath name <.> "elm"
244244 let inRoot path = File.exists (root </> path)
245245
@@ -276,7 +276,7 @@ crawlModule env@(Env _ root pkg srcDirs buildID locals foreigns) mvar docsNeed n
276276 return $ SBadImport $ Import.AmbiguousForeign dep d ds
277277
278278 Nothing ->
279− if Name.isKernel name && Pkg.isKernel pkg then
279+ if Name.isKernel name && Parse.isKernel projectType then
280280 do exists <- File.exists ("src" </> ModuleName.toFilePath name <.> "js")
281281 return $ if exists then SKernel else SBadImport Import.NotFound
282282 else
@@ -284,10 +284,10 @@ crawlModule env@(Env _ root pkg srcDirs buildID locals foreigns) mvar docsNeed n
284284
285285
286286crawlFile :: Env -> MVar StatusDict -> DocsNeed -> ModuleName.Raw -> FilePath -> File.Time -> Details.BuildID -> IO Status
287−crawlFile env@(Env _ root pkg _ buildID _ _) mvar docsNeed expectedName path time lastChange =
287+crawlFile env@(Env _ root projectType _ buildID _ _) mvar docsNeed expectedName path time lastChange =
288288 do source <- File.readUtf8 (root </> path)
289289
290− case Parse.fromByteString pkg source of
290+ case Parse.fromByteString projectType source of
291291 Left err ->
292292 return $ SBadSyntax path time source err
293293
@@ -338,7 +338,7 @@ data CachedInterface
338338
339339
340340checkModule :: Env -> Dependencies -> MVar ResultDict -> ModuleName.Raw -> Status -> IO Result
341−checkModule env@(Env _ root pkg _ _ _ _) foreigns resultsMVar name status =
341+checkModule env@(Env _ root projectType _ _ _ _) foreigns resultsMVar name status =
342342 case status of
343343 SCached local@(Details.Local path time deps hasMain lastChange lastCompile) ->
344344 do results <- readMVar resultsMVar
@@ -346,7 +346,7 @@ checkModule env@(Env _ root pkg _ _ _ _) foreigns resultsMVar name status =
346346 case depsStatus of
347347 DepsChange ifaces ->
348348 do source <- File.readUtf8 path
349− case Parse.fromByteString pkg source of
349+ case Parse.fromByteString projectType source of
350350 Right modul -> compile env (DocsNeed False) local source ifaces modul
351351 Left err ->
352352 return $ RProblem $
@@ -362,7 +362,7 @@ checkModule env@(Env _ root pkg _ _ _ _) foreigns resultsMVar name status =
362362 DepsNotFound problems ->
363363 do source <- File.readUtf8 path
364364 return $ RProblem $ Error.Module name path time source $
365− case Parse.fromByteString pkg source of
365+ case Parse.fromByteString projectType source of
366366 Right (Src.Module _ _ _ imports _ _ _ _ _) ->
367367 Error.BadImports (toImportErrors env results imports problems)
368368
@@ -675,7 +675,10 @@ checkInside name p1 status =
675675
676676
677677compile :: Env -> DocsNeed -> Details.Local -> B.ByteString -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> IO Result
678−compile (Env key root pkg _ buildID _ _) docsNeed (Details.Local path time deps main lastChange _) source ifaces modul =
678+compile (Env key root projectType _ buildID _ _) docsNeed (Details.Local path time deps main lastChange _) source ifaces modul =
679+ let
680+ pkg = projectTypeToPkg projectType
681+ in
679682 case Compile.compile pkg ifaces modul of
680683 Right (Compile.Artifacts canonical annotations objects) ->
681684 do let name = Src.getName modul
@@ -703,6 +706,13 @@ compile (Env key root pkg _ buildID _ _) docsNeed (Details.Local path time deps
703706 Error.Module (Src.getName modul) path time source err
704707
705708
709+projectTypeToPkg :: Parse.ProjectType -> Pkg.Name
710+projectTypeToPkg projectType =
711+ case projectType of
712+ Parse.Package pkg -> pkg
713+ Parse.Application -> Pkg.dummyName
714+
715+
706716
707717-- WRITE DETAILS
708718
@@ -847,9 +857,9 @@ data ReplArtifacts =
847857fromRepl :: FilePath -> Details.Details -> B.ByteString -> IO (Either Exit.Repl ReplArtifacts)
848858fromRepl root details source =
849859 let
850− env@(Env _ _ pkg _ _ _ _) = makeEnv Reporting.ignorer root details
860+ env@(Env _ _ projectType _ _ _ _) = makeEnv Reporting.ignorer root details
851861 in
852− case Parse.fromByteString pkg source of
862+ case Parse.fromByteString projectType source of
853863 Left syntaxError ->
854864 return $ Left $ Exit.ReplBadInput source $ Error.BadSyntax syntaxError
855865
@@ -878,8 +888,11 @@ fromRepl root details source =
878888
879889
880890finalizeReplArtifacts :: Env -> B.ByteString -> Src.Module -> DepsStatus -> ResultDict -> Map.Map ModuleName.Raw Result -> IO (Either Exit.Repl ReplArtifacts)
881−finalizeReplArtifacts env@(Env _ root pkg _ _ _ _) source modul@(Src.Module _ _ _ imports _ _ _ _ _) depsStatus resultMVars results =
891+finalizeReplArtifacts env@(Env _ root projectType _ _ _ _) source modul@(Src.Module _ _ _ imports _ _ _ _ _) depsStatus resultMVars results =
882892 let
893+ pkg =
894+ projectTypeToPkg projectType
895+
883896 compileInput ifaces =
884897 case Compile.compile pkg ifaces modul of
885898 Right (Compile.Artifacts canonical annotations objects) ->
@@ -1070,7 +1083,7 @@ data MainStatus
10701083
10711084
10721085crawlMain :: Env -> MVar StatusDict -> MainLocation -> IO MainStatus
1073−crawlMain env@(Env _ _ pkg _ buildID _ _) mvar given =
1086+crawlMain env@(Env _ _ projectType _ buildID _ _) mvar given =
10741087 case given of
10751088 LInside name ->
10761089 do statusMVar <- newEmptyMVar
@@ -1082,7 +1095,7 @@ crawlMain env@(Env _ _ pkg _ buildID _ _) mvar given =
10821095 LOutside path ->
10831096 do time <- File.getTime path
10841097 source <- File.readUtf8 path
1085− case Parse.fromByteString pkg source of
1098+ case Parse.fromByteString projectType source of
10861099 Right modul@(Src.Module _ _ _ imports values _ _ _ _) ->
10871100 do let deps = map Src.getImportName imports
10881101 let local = Details.Local path time deps (any isMain values) buildID buildID
@@ -1134,8 +1147,9 @@ checkMain env@(Env _ root _ _ _ _ _) results pendingMain =
11341147
11351148
11361149compileOutside :: Env -> Details.Local -> B.ByteString -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> IO MainResult
1137−compileOutside (Env key _ pkg _ _ _ _) (Details.Local path time _ _ _ _) source ifaces modul =
1150+compileOutside (Env key _ projectType _ _ _ _) (Details.Local path time _ _ _ _) source ifaces modul =
11381151 let
1152+ pkg = projectTypeToPkg projectType
11391153 name = Src.getName modul
11401154 in
11411155 case Compile.compile pkg ifaces modul of
@@ -1157,13 +1171,13 @@ data Main
11571171
11581172
11591173toArtifacts :: Env -> Dependencies -> Map.Map ModuleName.Raw Result -> NE.List MainResult -> Either Exit.BuildProblem Artifacts
1160−toArtifacts (Env _ _ pkg _ _ _ _) foreigns results mainResults =
1174+toArtifacts (Env _ _ projectType _ _ _ _) foreigns results mainResults =
11611175 case gatherProblemsOrMains results mainResults of
11621176 Left (NE.List e es) ->
11631177 Left (Exit.BuildBadModules e es)
11641178
11651179 Right mains ->
1166− Right $ Artifacts pkg foreigns mains $
1180+ Right $ Artifacts (projectTypeToPkg projectType) foreigns mains $
11671181 Map.foldrWithKey addInside (foldr addOutside [] mainResults) results
11681182
11691183
compiler/src/Parse/Module.hs+1
@@ -3,6 +3,7 @@
33module Parse.Module
44 ( fromByteString
55 , ProjectType(..)
6+ , isKernel
67 , chompImports
78 , chompImport
89 )