on master help sign in
Detect when "exposed-modules" are not all found in `elm make`
commit03296b22ba1b78aaa5b97acf4c558504e1b7d153 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 14 May 2019, 18:33 (7 years ago) parent55d5d91
2 files changed+29−8
builder/src/Build.hs+26−8 builder/src/Reporting/Exit.hs+3
builder/src/Build.hs+26−8
@@ -97,7 +97,7 @@ forkWithKey func dict =
9797
9898
9999fromExposed :: Reporting.Style -> FilePath -> Details.Details -> NE.List ModuleName.Raw -> IO (Either Exit.BuildProblem ())
100−fromExposed style root details (NE.List e es) =
100+fromExposed style root details exposed@(NE.List e es) =
101101 Reporting.trackBuild style $ \key ->
102102 do let env = makeEnv key root details
103103 dmvar <- Details.loadInterfaces root details
@@ -121,7 +121,7 @@ fromExposed style root details (NE.List e es) =
121121 putMVar rmvar resultMVars
122122 results <- traverse readMVar resultMVars
123123 writeDetails root details results
124− return (detectProblems results) -- TODO error if "exposed-modules" are not found
124+ return (detectExposedProblems exposed results)
125125
126126
127127
@@ -688,14 +688,19 @@ addNewLocal name result locals =
688688
689689
690690
691−-- DETECT PROBLEMS
691+-- DETECT EXPOSED PROBLEMS
692692
693693
694−detectProblems :: Map.Map ModuleName.Raw Result -> Either Exit.BuildProblem ()
695−detectProblems results =
696− case Map.foldr addErrors [] results of
697− [] -> Right ()
698− e:es -> Left (Exit.BuildModuleProblems e es)
694+detectExposedProblems :: NE.List ModuleName.Raw -> Map.Map ModuleName.Raw Result -> Either Exit.BuildProblem ()
695+detectExposedProblems exposed results =
696+ case foldr addImportProblems [] exposed of
697+ p:ps ->
698+ Left (Exit.BuildProjectProblem (Exit.BP_MissingExposed (NE.List p ps)))
699+
700+ [] ->
701+ case Map.foldr addErrors [] results of
702+ [] -> Right ()
703+ e:es -> Left (Exit.BuildModuleProblems e es)
699704
700705
701706addErrors :: Result -> [Error.Module] -> [Error.Module]
@@ -711,6 +716,19 @@ addErrors result errors =
711716 RKernel -> errors
712717
713718
719+addImportProblems :: Map.Map ModuleName.Raw Result -> ModuleName.Raw -> [(ModuleName.Raw, Import.Problem)] -> [(ModuleName.Raw, Import.Problem)]
720+addImportProblems results name problems =
721+ case results ! name of
722+ RNew _ _ _ -> problems
723+ RSame _ _ _ -> problems
724+ RCached _ _ -> problems
725+ RNotFound p -> (name, p) : problems
726+ RProblem _ -> problems
727+ RBlocked -> problems
728+ RForeign _ -> problems
729+ RKernel -> problems
730+
731+
714732
715733--------------------------------------------------------------------------------
716734--------------------------------------------------------------------------------
builder/src/Reporting/Exit.hs+3
@@ -34,6 +34,7 @@ module Reporting.Exit
3434
3535
3636import qualified Data.List as List
37+import qualified Data.NonEmptyList as NE
3738import qualified Data.Utf8 as Utf8
3839
3940import qualified Elm.Constraint as C
@@ -45,6 +46,7 @@ import qualified Http
4546import qualified Json.Encode as Encode
4647import Reporting.Doc ((<>))
4748import qualified Reporting.Doc as D
49+import qualified Reporting.Error.Import as Import
4850import qualified Reporting.Error.Json as Json
4951import qualified Reporting.Exit.Help as Help
5052import qualified Reporting.Error as Error
@@ -386,6 +388,7 @@ data BuildProjectProblem
386388 | BP_MainNameDuplicate ModuleName.Raw FilePath FilePath
387389 | BP_CannotLoadDependencies
388390 | BP_Cycle ModuleName.Raw [ModuleName.Raw]
391+ | BP_MissingExposed (NE.List (ModuleName.Raw, Import.Problem))
389392
390393
391394