diff --git a/builder/src/Build.hs b/builder/src/Build.hs index 597f835e2..78d778a75 100644 --- a/builder/src/Build.hs +++ b/builder/src/Build.hs @@ -58,6 +58,9 @@ import qualified Reporting.Render.Type.Localizer as L import qualified Stuff +import Lamdera + + -- ENVIRONMENT @@ -1121,6 +1124,8 @@ crawlRoot env@(Env _ _ projectType _ buildID _ _) mvar root = do let deps = map Src.getImportName imports let local = Details.Local path time deps (any isMain values) buildID buildID crawlDeps env mvar deps (SOutsideOk local source modul) + & Lamdera.alternativeImplementationWhen (lamderaIsLiveHarnessModule modul) + (crawlDeps (lamderaLiveHarnessEnv env) mvar deps (SOutsideOk local source modul)) Left syntaxError -> return $ SOutsideErr $ @@ -1249,3 +1254,21 @@ addOutside root modules = ROutsideOk name iface objs -> Fresh name iface objs : modules ROutsideErr _ -> modules ROutsideBlocked -> modules + + + +-- @LAMDERA + + +{- Alternative implementation extended with support for additional +source directories when compiling the Lamdera Live harness module +-} +lamderaIsLiveHarnessModule :: Src.Module -> Bool +lamderaIsLiveHarnessModule modul = + Src.getName modul == "LocalDev" + + +lamderaLiveHarnessEnv :: Env -> Env +lamderaLiveHarnessEnv env = + -- adds the Lamdera cache directory as an additional source directory + env { _srcDirs = AbsoluteSrcDir (Lamdera.lamderaCache $ _root env) : _srcDirs env } \ No newline at end of file diff --git a/builder/src/Elm/Outline.hs b/builder/src/Elm/Outline.hs index 2df455dce..9ec4ea50f 100644 --- a/builder/src/Elm/Outline.hs +++ b/builder/src/Elm/Outline.hs @@ -202,7 +202,7 @@ read root shouldCheckLamdera = then Left Exit.OutlineNoPkgCore else Right outline - App (AppOutline version srcDirs@(NE.List srcHead srcTail) direct indirect testDirect testIndirect) + App (AppOutline _ srcDirs direct indirect _ _) | Map.notMember Pkg.core direct -> return $ Left Exit.OutlineNoAppCore @@ -219,9 +219,8 @@ read root shouldCheckLamdera = do maybeDups <- detectDuplicates root (NE.toList srcDirs) case maybeDups of Nothing -> - let newSrcDirs = NE.List srcHead (AbsoluteSrcDir (Lamdera.lamderaCache root) : srcTail) in Lamdera.alternativeImplementationPassthrough (Lamdera.Checks.runChecks root shouldCheckLamdera direct) $ - return $ Right (App (AppOutline version newSrcDirs direct indirect testDirect testIndirect)) + return $ Right outline Just (canonicalDir, (dir1,dir2)) -> return $ Left (Exit.OutlineHasDuplicateSrcDirs canonicalDir dir1 dir2)