on master help sign in
Hook up import errors a little bit different
commitf46d54f63b2320e8bba281c97e6ae1aaef836412 authorEvan Czaplicki <evancz@users.noreply.github.com> dateThu 2 May 2019, 16:20 (7 years ago) parentc6be407
1 file changed+20−14
builder/src/Build.hs+20−14
builder/src/Build.hs+20−14
@@ -69,7 +69,7 @@ makeEnv :: Reporting.BKey -> FilePath -> Details.Details -> Env
6969makeEnv key root (Details.Details _ validOutline locals foreigns _) =
7070 case validOutline of
7171 Details.ValidApp (Outline.AppOutline _ srcDirs _ _ _ _) ->
72− Env key root Pkg.dummyName srcDirs locals foreigns
72+ Env key root Pkg.dummyName (NE.toList srcDirs) locals foreigns
7373
7474 Details.ValidPkg (Outline.PkgOutline pkg _ _ _ _ _ _ _) _ ->
7575 Env key root pkg ["src"] locals foreigns
@@ -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)
124+ return (detectProblems results) -- TODO error if "exposed-modules" are not found
125125
126126
127127
@@ -174,7 +174,7 @@ fromMains style root details paths =
174174 rmvar <- newEmptyMVar
175175 resultsMVars <- forkWithKey (checkModule env foreigns rmvar) statuses
176176 putMVar rmvar resultsMVars
177− rmainMVars <- traverse (fork . checkMain env foreigns resultsMVars) smains
177+ rmainMVars <- traverse (fork . checkMain env resultsMVars) smains
178178 results <- traverse readMVar resultsMVars
179179 writeDetails root details results
180180 toArtifacts env foreigns results <$> traverse readMVar rmainMVars
@@ -340,7 +340,7 @@ checkModule env@(Env _ root pkg _ _ _) foreigns resultsMVar name status =
340340 return $ RProblem $ Error.Module name path time source $
341341 case Parse.fromByteString pkg source of
342342 Right (Src.Module _ _ imports _ _ _ _ _) ->
343− Error.BadImports (toImportErrors foreigns results imports problems)
343+ Error.BadImports (toImportErrors env results imports problems)
344344
345345 Left err ->
346346 Error.BadSyntax err
@@ -367,7 +367,7 @@ checkModule env@(Env _ root pkg _ _ _) foreigns resultsMVar name status =
367367
368368 DepsNotFound problems ->
369369 return $ RProblem $ Error.Module name path time source $
370− Error.BadImports (toImportErrors foreigns results imports problems)
370+ Error.BadImports (toImportErrors env results imports problems)
371371
372372 SBadImport importProblem ->
373373 return (RNotFound importProblem)
@@ -447,19 +447,24 @@ checkDepsHelp root results deps new same cached importProblems isBlocked =
447447-- TO IMPORT ERROR
448448
449449
450−toImportErrors :: Dependencies -> ResultDict -> [Src.Import] -> NE.List (ModuleName.Raw, Import.Problem) -> NE.List Import.Error
451−toImportErrors foreigns results imports problems =
450+toImportErrors :: Env -> ResultDict -> [Src.Import] -> NE.List (ModuleName.Raw, Import.Problem) -> NE.List Import.Error
451+toImportErrors (Env _ _ _ _ locals foreigns) results imports problems =
452452 let
453453 knownModules =
454− Set.union
455− (Set.fromList (map ModuleName._module (Map.keys foreigns)))
456− (Map.keysSet results)
454+ Set.unions
455+ [ Map.keysSet foreigns
456+ , Map.keysSet locals
457+ , Map.keysSet results
458+ ]
459+
460+ unimportedModules =
461+ Set.difference knownModules (Set.fromList (map Src.getImportName imports))
457462
458463 regionDict =
459464 Map.fromList (map (\(Src.Import (A.At region name) _ _) -> (name, region)) imports)
460465
461466 toError (name, problem) =
462− Import.Error (regionDict ! name) name knownModules problem
467+ Import.Error (regionDict ! name) name unimportedModules problem
463468 in
464469 fmap toError problems
465470
@@ -788,6 +793,7 @@ isInsideSrcDirs (Env _ root _ srcDirs _ _) path absolutePath =
788793 (exits, maybes) =
789794 Either.partitionEithers (map (isInsideSrcDirsHelp relativeSegments) srcDirs)
790795 in
796+ -- TODO make sure this is all correct
791797 case (exits, Maybe.catMaybes maybes) of
792798 (_, [(_,name)]) -> Right (Location absolutePath path (LInside name))
793799 ([], []) -> Right (Location absolutePath path (LOutside path))
@@ -874,8 +880,8 @@ data MainResult
874880 | ROutsideBlocked
875881
876882
877−checkMain :: Env -> Dependencies -> ResultDict -> MainStatus -> IO MainResult
878−checkMain env@(Env _ root _ _ _ _) foreigns results pendingMain =
883+checkMain :: Env -> ResultDict -> MainStatus -> IO MainResult
884+checkMain env@(Env _ root _ _ _ _) results pendingMain =
879885 case pendingMain of
880886 SInside name ->
881887 return (RInside name)
@@ -904,7 +910,7 @@ checkMain env@(Env _ root _ _ _ _) foreigns results pendingMain =
904910
905911 DepsNotFound problems ->
906912 return $ ROutsideErr $ Error.Module (Src.getName modul) path time source $
907− Error.BadImports (toImportErrors foreigns results imports problems)
913+ Error.BadImports (toImportErrors env results imports problems)
908914
909915
910916compileOutside :: Env -> Details.Local -> B.ByteString -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> MainResult