@@ -64,7 +64,7 @@ data Env =
65 { _key :: Reporting.BKey
65 { _key :: Reporting.BKey
66 , _root :: FilePath
66 , _root :: FilePath
67− , _pkg :: Pkg.Name
67+ , _project :: Parse.ProjectType
68 , _srcDirs :: [FilePath]
68 , _srcDirs :: [FilePath]
69 , _buildID :: Details.BuildID
69 , _buildID :: Details.BuildID
70 , _locals :: Map.Map ModuleName.Raw Details.Local
70 , _locals :: Map.Map ModuleName.Raw Details.Local
@@ -76,10 +76,10 @@ makeEnv :: Reporting.BKey -> FilePath -> Details.Details -> Env
76makeEnv key root (Details.Details _ validOutline buildID locals foreigns _) =
76makeEnv key root (Details.Details _ validOutline buildID locals foreigns _) =
77 case validOutline of
77 case validOutline of
78 Details.ValidApp srcDirs ->
78 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
81 Details.ValidPkg pkg _ _ ->
81 Details.ValidPkg pkg _ _ ->
82− Env key root pkg ["src"] buildID locals foreigns
82+ Env key root (Parse.Package pkg) ["src"] buildID locals foreigns
@@ -239,7 +239,7 @@ crawlDeps env mvar deps blockedValue =
241crawlModule :: Env -> MVar StatusDict -> DocsNeed -> ModuleName.Raw -> IO Status
241crawlModule :: 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 =
243 do let fileName = ModuleName.toFilePath name <.> "elm"
243 do let fileName = ModuleName.toFilePath name <.> "elm"
244 let inRoot path = File.exists (root </> path)
244 let inRoot path = File.exists (root </> path)
@@ -276,7 +276,7 @@ crawlModule env@(Env _ root pkg srcDirs buildID locals foreigns) mvar docsNeed n
276 return $ SBadImport $ Import.AmbiguousForeign dep d ds
276 return $ SBadImport $ Import.AmbiguousForeign dep d ds
278 Nothing ->
278 Nothing ->
279− if Name.isKernel name && Pkg.isKernel pkg then
279+ if Name.isKernel name && Parse.isKernel projectType then
280 do exists <- File.exists ("src" </> ModuleName.toFilePath name <.> "js")
280 do exists <- File.exists ("src" </> ModuleName.toFilePath name <.> "js")
281 return $ if exists then SKernel else SBadImport Import.NotFound
281 return $ if exists then SKernel else SBadImport Import.NotFound
@@ -284,10 +284,10 @@ crawlModule env@(Env _ root pkg srcDirs buildID locals foreigns) mvar docsNeed n
286crawlFile :: Env -> MVar StatusDict -> DocsNeed -> ModuleName.Raw -> FilePath -> File.Time -> Details.BuildID -> IO Status
286crawlFile :: 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 =
288 do source <- File.readUtf8 (root </> path)
288 do source <- File.readUtf8 (root </> path)
290− case Parse.fromByteString pkg source of
290+ case Parse.fromByteString projectType source of
291 Left err ->
291 Left err ->
292 return $ SBadSyntax path time source err
292 return $ SBadSyntax path time source err
@@ -338,7 +338,7 @@ data CachedInterface
340checkModule :: Env -> Dependencies -> MVar ResultDict -> ModuleName.Raw -> Status -> IO Result
340checkModule :: 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 =
342 case status of
342 case status of
343 SCached local@(Details.Local path time deps hasMain lastChange lastCompile) ->
343 SCached local@(Details.Local path time deps hasMain lastChange lastCompile) ->
344 do results <- readMVar resultsMVar
344 do results <- readMVar resultsMVar
@@ -346,7 +346,7 @@ checkModule env@(Env _ root pkg _ _ _ _) foreigns resultsMVar name status =
346 case depsStatus of
346 case depsStatus of
347 DepsChange ifaces ->
347 DepsChange ifaces ->
348 do source <- File.readUtf8 path
348 do source <- File.readUtf8 path
349− case Parse.fromByteString pkg source of
349+ case Parse.fromByteString projectType source of
350 Right modul -> compile env (DocsNeed False) local source ifaces modul
350 Right modul -> compile env (DocsNeed False) local source ifaces modul
351 Left err ->
351 Left err ->
352 return $ RProblem $
352 return $ RProblem $
@@ -362,7 +362,7 @@ checkModule env@(Env _ root pkg _ _ _ _) foreigns resultsMVar name status =
362 DepsNotFound problems ->
362 DepsNotFound problems ->
363 do source <- File.readUtf8 path
363 do source <- File.readUtf8 path
364 return $ RProblem $ Error.Module name path time source $
364 return $ RProblem $ Error.Module name path time source $
365− case Parse.fromByteString pkg source of
365+ case Parse.fromByteString projectType source of
366 Right (Src.Module _ _ _ imports _ _ _ _ _) ->
366 Right (Src.Module _ _ _ imports _ _ _ _ _) ->
367 Error.BadImports (toImportErrors env results imports problems)
367 Error.BadImports (toImportErrors env results imports problems)
@@ -675,7 +675,10 @@ checkInside name p1 status =
677compile :: Env -> DocsNeed -> Details.Local -> B.ByteString -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> IO Result
677compile :: 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 =
680+ pkg = projectTypeToPkg projectType
679 case Compile.compile pkg ifaces modul of
682 case Compile.compile pkg ifaces modul of
680 Right (Compile.Artifacts canonical annotations objects) ->
683 Right (Compile.Artifacts canonical annotations objects) ->
681 do let name = Src.getName modul
684 do let name = Src.getName modul
@@ -703,6 +706,13 @@ compile (Env key root pkg _ buildID _ _) docsNeed (Details.Local path time deps
703 Error.Module (Src.getName modul) path time source err
706 Error.Module (Src.getName modul) path time source err
709+projectTypeToPkg :: Parse.ProjectType -> Pkg.Name
710+projectTypeToPkg projectType =
712+ Parse.Package pkg -> pkg
713+ Parse.Application -> Pkg.dummyName
707-- WRITE DETAILS
717-- WRITE DETAILS
@@ -847,9 +857,9 @@ data ReplArtifacts =
847fromRepl :: FilePath -> Details.Details -> B.ByteString -> IO (Either Exit.Repl ReplArtifacts)
857fromRepl :: FilePath -> Details.Details -> B.ByteString -> IO (Either Exit.Repl ReplArtifacts)
848fromRepl root details source =
858fromRepl root details source =
850− env@(Env _ _ pkg _ _ _ _) = makeEnv Reporting.ignorer root details
860+ env@(Env _ _ projectType _ _ _ _) = makeEnv Reporting.ignorer root details
852− case Parse.fromByteString pkg source of
862+ case Parse.fromByteString projectType source of
853 Left syntaxError ->
863 Left syntaxError ->
854 return $ Left $ Exit.ReplBadInput source $ Error.BadSyntax syntaxError
864 return $ Left $ Exit.ReplBadInput source $ Error.BadSyntax syntaxError
@@ -878,8 +888,11 @@ fromRepl root details source =
880finalizeReplArtifacts :: Env -> B.ByteString -> Src.Module -> DepsStatus -> ResultDict -> Map.Map ModuleName.Raw Result -> IO (Either Exit.Repl ReplArtifacts)
890finalizeReplArtifacts :: 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 =
894+ projectTypeToPkg projectType
883 compileInput ifaces =
896 compileInput ifaces =
884 case Compile.compile pkg ifaces modul of
897 case Compile.compile pkg ifaces modul of
885 Right (Compile.Artifacts canonical annotations objects) ->
898 Right (Compile.Artifacts canonical annotations objects) ->
@@ -1070,7 +1083,7 @@ data MainStatus
1072crawlMain :: Env -> MVar StatusDict -> MainLocation -> IO MainStatus
1085crawlMain :: Env -> MVar StatusDict -> MainLocation -> IO MainStatus
1073−crawlMain env@(Env _ _ pkg _ buildID _ _) mvar given =
1086+crawlMain env@(Env _ _ projectType _ buildID _ _) mvar given =
1074 case given of
1087 case given of
1075 LInside name ->
1088 LInside name ->
1076 do statusMVar <- newEmptyMVar
1089 do statusMVar <- newEmptyMVar
@@ -1082,7 +1095,7 @@ crawlMain env@(Env _ _ pkg _ buildID _ _) mvar given =
1082 LOutside path ->
1095 LOutside path ->
1083 do time <- File.getTime path
1096 do time <- File.getTime path
1084 source <- File.readUtf8 path
1097 source <- File.readUtf8 path
1085− case Parse.fromByteString pkg source of
1098+ case Parse.fromByteString projectType source of
1086 Right modul@(Src.Module _ _ _ imports values _ _ _ _) ->
1099 Right modul@(Src.Module _ _ _ imports values _ _ _ _) ->
1087 do let deps = map Src.getImportName imports
1100 do let deps = map Src.getImportName imports
1088 let local = Details.Local path time deps (any isMain values) buildID buildID
1101 let local = Details.Local path time deps (any isMain values) buildID buildID
@@ -1134,8 +1147,9 @@ checkMain env@(Env _ root _ _ _ _ _) results pendingMain =
1136compileOutside :: Env -> Details.Local -> B.ByteString -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> IO MainResult
1149compileOutside :: 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 =
1152+ pkg = projectTypeToPkg projectType
1139 name = Src.getName modul
1153 name = Src.getName modul
1141 case Compile.compile pkg ifaces modul of
1155 case Compile.compile pkg ifaces modul of
@@ -1157,13 +1171,13 @@ data Main
1159toArtifacts :: Env -> Dependencies -> Map.Map ModuleName.Raw Result -> NE.List MainResult -> Either Exit.BuildProblem Artifacts
1173toArtifacts :: 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 =
1161 case gatherProblemsOrMains results mainResults of
1175 case gatherProblemsOrMains results mainResults of
1162 Left (NE.List e es) ->
1176 Left (NE.List e es) ->
1163 Left (Exit.BuildBadModules e es)
1177 Left (Exit.BuildBadModules e es)
1165 Right mains ->
1179 Right mains ->
1166− Right $ Artifacts pkg foreigns mains $
1180+ Right $ Artifacts (projectTypeToPkg projectType) foreigns mains $
1167 Map.foldrWithKey addInside (foldr addOutside [] mainResults) results
1181 Map.foldrWithKey addInside (foldr addOutside [] mainResults) results