on master help sign in
show paths relative to project root in error messages
commit822401199c103a1567f2d208a9e8014740e4732e authorEvan Czaplicki <evancz@users.noreply.github.com> dateFri 9 Aug 2019, 12:31 (7 years ago) parentd5c019e
5 files changed+42−38
builder/src/Build.hs+7−7 builder/src/Reporting.hs+2−2 builder/src/Reporting/Exit.hs+8−8 builder/src/Reporting/Exit/Help.hs+5−5 compiler/src/Reporting/Error.hs+20−16
builder/src/Build.hs+7−7
@@ -159,7 +159,7 @@ fromExposed style root details docsGoal exposed@(NE.List e es) =
159159 putMVar rmvar resultMVars
160160 results <- traverse readMVar resultMVars
161161 writeDetails root details results
162− finalizeExposed docsGoal exposed results
162+ finalizeExposed root docsGoal exposed results
163163
164164
165165
@@ -765,8 +765,8 @@ addNewLocal name result locals =
765765-- FINALIZE EXPOSED
766766
767767
768−finalizeExposed :: DocsGoal docs -> NE.List ModuleName.Raw -> Map.Map ModuleName.Raw Result -> IO (Either Exit.BuildProblem docs)
769−finalizeExposed docsGoal exposed results =
768+finalizeExposed :: FilePath -> DocsGoal docs -> NE.List ModuleName.Raw -> Map.Map ModuleName.Raw Result -> IO (Either Exit.BuildProblem docs)
769+finalizeExposed root docsGoal exposed results =
770770 case foldr (addImportProblems results) [] (NE.toList exposed) of
771771 p:ps ->
772772 return $ Left $ Exit.BuildProjectProblem (Exit.BP_MissingExposed (NE.List p ps))
@@ -774,7 +774,7 @@ finalizeExposed docsGoal exposed results =
774774 [] ->
775775 case Map.foldr addErrors [] results of
776776 [] -> Right <$> finalizeDocs docsGoal results
777− e:es -> return $ Left $ Exit.BuildBadModules e es
777+ e:es -> return $ Left $ Exit.BuildBadModules root e es
778778
779779
780780addErrors :: Result -> [Error.Module] -> [Error.Module]
@@ -942,7 +942,7 @@ finalizeReplArtifacts env@(Env _ root projectType _ _ _ _) source modul@(Src.Mod
942942 DepsBlock ->
943943 case Map.foldr addErrors [] results of
944944 [] -> return $ Left $ Exit.ReplBlocked
945− e:es -> return $ Left $ Exit.ReplBadLocalDeps e es
945+ e:es -> return $ Left $ Exit.ReplBadLocalDeps root e es
946946
947947 DepsNotFound problems ->
948948 return $ Left $ Exit.ReplBadInput source $ Error.BadImports $
@@ -1186,10 +1186,10 @@ data Main
11861186
11871187
11881188toArtifacts :: Env -> Dependencies -> Map.Map ModuleName.Raw Result -> NE.List MainResult -> Either Exit.BuildProblem Artifacts
1189−toArtifacts (Env _ _ projectType _ _ _ _) foreigns results mainResults =
1189+toArtifacts (Env _ root projectType _ _ _ _) foreigns results mainResults =
11901190 case gatherProblemsOrMains results mainResults of
11911191 Left (NE.List e es) ->
1192− Left (Exit.BuildBadModules e es)
1192+ Left (Exit.BuildBadModules root e es)
11931193
11941194 Right mains ->
11951195 Right $ Artifacts (projectTypeToPkg projectType) foreigns mains $
builder/src/Reporting.hs+2−2
@@ -364,10 +364,10 @@ toFinalMessage done result =
364364
365365 Left problem ->
366366 case problem of
367− Exit.BuildBadModules _ [] ->
367+ Exit.BuildBadModules _ _ [] ->
368368 "Detected problems in 1 module."
369369
370− Exit.BuildBadModules _ (_:ps) ->
370+ Exit.BuildBadModules _ _ (_:ps) ->
371371 "Detected problems in " ++ show (2 + length ps) ++ " modules."
372372
373373 Exit.BuildProjectProblem _ ->
builder/src/Reporting/Exit.hs+8−8
@@ -1759,7 +1759,7 @@ makeToReport make =
17591759
17601760
17611761data BuildProblem
1762− = BuildBadModules Error.Module [Error.Module]
1762+ = BuildBadModules FilePath Error.Module [Error.Module]
17631763 | BuildProjectProblem BuildProjectProblem
17641764
17651765
@@ -1778,8 +1778,8 @@ data BuildProjectProblem
17781778toBuildProblemReport :: BuildProblem -> Help.Report
17791779toBuildProblemReport problem =
17801780 case problem of
1781− BuildBadModules e es ->
1782− Help.compilerReport e es
1781+ BuildBadModules root e es ->
1782+ Help.compilerReport root e es
17831783
17841784 BuildProjectProblem projectProblem ->
17851785 toProjectProblemReport projectProblem
@@ -2040,7 +2040,7 @@ reactorToReport problem =
20402040data Repl
20412041 = ReplBadDetails Details
20422042 | ReplBadInput BS.ByteString Error.Error
2043− | ReplBadLocalDeps Error.Module [Error.Module]
2043+ | ReplBadLocalDeps FilePath Error.Module [Error.Module]
20442044 | ReplProjectProblem BuildProjectProblem
20452045 | ReplBadGenerate Generate
20462046 | ReplBadCache
@@ -2054,10 +2054,10 @@ replToReport problem =
20542054 toDetailsReport details
20552055
20562056 ReplBadInput source err ->
2057− Help.compilerReport (Error.Module N.replModule "REPL" File.zeroTime source err) []
2057+ Help.compilerReport "/" (Error.Module N.replModule "REPL" File.zeroTime source err) []
20582058
2059− ReplBadLocalDeps e es ->
2060− Help.compilerReport e es
2059+ ReplBadLocalDeps root e es ->
2060+ Help.compilerReport root e es
20612061
20622062 ReplProjectProblem projectProblem ->
20632063 toProjectProblemReport projectProblem
@@ -2085,7 +2085,7 @@ workerToReport :: Worker -> Help.Report
20852085workerToReport problem =
20862086 case problem of
20872087 WorkerInputError err ->
2088− Help.compilerReport err []
2088+ Help.compilerReport "/" err []
20892089
20902090 WorkerNoMain ->
20912091 Help.report "NO MAIN" Nothing
builder/src/Reporting/Exit/Help.hs+5−5
@@ -29,7 +29,7 @@ import qualified Reporting.Error as Error
2929
3030
3131data Report
32− = CompilerReport Error.Module [Error.Module]
32+ = CompilerReport FilePath Error.Module [Error.Module]
3333 | Report
3434 { _title :: String
3535 , _path :: Maybe FilePath
@@ -52,7 +52,7 @@ jsonReport =
5252 Report
5353
5454
55−compilerReport :: Error.Module -> [Error.Module] -> Report
55+compilerReport :: FilePath -> Error.Module -> [Error.Module] -> Report
5656compilerReport =
5757 CompilerReport
5858
@@ -64,8 +64,8 @@ compilerReport =
6464reportToDoc :: Report -> D.Doc
6565reportToDoc report_ =
6666 case report_ of
67− CompilerReport e es ->
68− Error.toDoc e es
67+ CompilerReport root e es ->
68+ Error.toDoc root e es
6969
7070 Report title maybePath message ->
7171 let
@@ -94,7 +94,7 @@ reportToDoc report_ =
9494reportToJson :: Report -> E.Value
9595reportToJson report_ =
9696 case report_ of
97− CompilerReport e es ->
97+ CompilerReport _ e es ->
9898 E.object
9999 [ "type" ==> E.chars "compile-errors"
100100 , "errors" ==> E.list Error.toJson (e:es)
compiler/src/Reporting/Error.hs+20−16
@@ -12,6 +12,7 @@ module Reporting.Error
1212import qualified Data.ByteString as B
1313import qualified Data.NonEmptyList as NE
1414import qualified Data.OneOrMore as OneOrMore
15+import qualified System.FilePath as FP
1516
1617import qualified Elm.ModuleName as ModuleName
1718import qualified File
@@ -38,8 +39,8 @@ import qualified Reporting.Report as Report
3839data Module =
3940 Module
4041 { _name :: ModuleName.Raw
41− , _path :: FilePath
42− , _time :: File.Time
42+ , _absolutePath :: FilePath
43+ , _modificationTime :: File.Time
4344 , _source :: B.ByteString
4445 , _error :: Error
4546 }
@@ -92,26 +93,26 @@ toReports source err =
9293-- TO DOC
9394
9495
95−toDoc :: Module -> [Module] -> D.Doc
96−toDoc err errs =
96+toDoc :: FilePath -> Module -> [Module] -> D.Doc
97+toDoc root err errs =
9798 let
98− (NE.List m ms) = NE.sortBy _time (NE.List err errs)
99+ (NE.List m ms) = NE.sortBy _modificationTime (NE.List err errs)
99100 in
100− D.vcat (toDocHelp m ms)
101+ D.vcat (toDocHelp root m ms)
101102
102103
103−toDocHelp :: Module -> [Module] -> [D.Doc]
104−toDocHelp module1 modules =
104+toDocHelp :: FilePath -> Module -> [Module] -> [D.Doc]
105+toDocHelp root module1 modules =
105106 case modules of
106107 [] ->
107− [moduleToDoc module1
108+ [moduleToDoc root module1
108109 ,""
109110 ]
110111
111112 module2 : otherModules ->
112− moduleToDoc module1
113+ moduleToDoc root module1
113114 : toSeparator module1 module2
114− : toDocHelp module2 otherModules
115+ : toDocHelp root module2 otherModules
115116
116117
117118toSeparator :: Module -> Module -> D.Doc
@@ -133,19 +134,22 @@ toSeparator beforeModule afterModule =
133134-- MODULE TO DOC
134135
135136
136−moduleToDoc :: Module -> D.Doc
137−moduleToDoc (Module _ path _ source err) =
137+moduleToDoc :: FilePath -> Module -> D.Doc
138+moduleToDoc root (Module _ absolutePath _ source err) =
138139 let
139140 reports =
140141 toReports (Code.toSource source) err
142+
143+ relativePath =
144+ FP.makeRelative root absolutePath
141145 in
142− D.vcat $ map (reportToDoc path) (NE.toList reports)
146+ D.vcat $ map (reportToDoc relativePath) (NE.toList reports)
143147
144148
145149reportToDoc :: FilePath -> Report.Report -> D.Doc
146−reportToDoc path (Report.Report title _ _ message) =
150+reportToDoc relativePath (Report.Report title _ _ message) =
147151 D.vcat
148− [ toMessageBar title path
152+ [ toMessageBar title relativePath
149153 , ""
150154 , message
151155 , ""