From a433eee3b9eb009b2b8506137fa8ca95e363eb7f Mon Sep 17 00:00:00 2001 From: Pit Capitain Date: Thu, 28 Aug 2025 11:06:56 +0200 Subject: [PATCH 1/2] Fix modified elm.json bug introduced in #46 --- builder/src/Build.hs | 25 ++++++++++++++++++++++++- builder/src/Elm/Outline.hs | 5 ++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/builder/src/Build.hs b/builder/src/Build.hs index 597f835e2..730c07b08 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 @@ -1120,7 +1123,9 @@ crawlRoot env@(Env _ _ projectType _ buildID _ _) mvar root = Right modul@(Src.Module _ _ _ imports values _ _ _ _) -> 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)) $ + crawlDeps 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) From b8d7ff261619013e47c674d9818d1e4d09603a09 Mon Sep 17 00:00:00 2001 From: Pit Capitain Date: Thu, 23 Oct 2025 09:46:57 +0200 Subject: [PATCH 2/2] Implemented the suggestion for a cleaner diff --- builder/src/Build.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/builder/src/Build.hs b/builder/src/Build.hs index 730c07b08..78d778a75 100644 --- a/builder/src/Build.hs +++ b/builder/src/Build.hs @@ -1123,9 +1123,9 @@ crawlRoot env@(Env _ _ projectType _ buildID _ _) mvar root = Right modul@(Src.Module _ _ _ imports values _ _ _ _) -> do let deps = map Src.getImportName imports let local = Details.Local path time deps (any isMain values) buildID buildID - Lamdera.alternativeImplementationWhen (lamderaIsLiveHarnessModule modul) - (crawlDeps (lamderaLiveHarnessEnv env) mvar deps (SOutsideOk local source modul)) $ - crawlDeps env mvar deps (SOutsideOk local source modul) + 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 $