Skip to content

Commit 6f3a47e

Browse files
committed
begin using Parse.Module.fromByteString API in Build.hs
1 parent b33cf77 commit 6f3a47e

File tree

2 files changed

+34
-19
lines changed

2 files changed

+34
-19
lines changed

builder/src/Build.hs

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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
7676
makeEnv 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

241241
crawlModule :: 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,18 +276,18 @@ 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
283283
return $ SBadImport Import.NotFound
284284

285285

286286
crawlFile :: 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,15 +338,15 @@ data CachedInterface
338338

339339

340340
checkModule :: 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
345345
depsStatus <- checkDeps root results deps lastCompile
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

677677
compile :: 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 =
847857
fromRepl :: FilePath -> Details.Details -> B.ByteString -> IO (Either Exit.Repl ReplArtifacts)
848858
fromRepl 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

880890
finalizeReplArtifacts :: 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

10721085
crawlMain :: 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

11361149
compileOutside :: 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

11591173
toArtifacts :: 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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
module Parse.Module
44
( fromByteString
55
, ProjectType(..)
6+
, isKernel
67
, chompImports
78
, chompImport
89
)

0 commit comments

Comments
 (0)