Skip to content

Commit 6bb8d5e

Browse files
committed
Fix purescript#1889, improve performance by avoiding whitespace operations on large strings
1 parent 3293a7b commit 6bb8d5e

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/Language/PureScript/Errors.hs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,31 +1181,32 @@ prettyPrintRef (PositionedDeclarationRef _ _ ref) = prettyPrintExport ref
11811181
-- Pretty print multiple errors
11821182
--
11831183
prettyPrintMultipleErrors :: Bool -> MultipleErrors -> String
1184-
prettyPrintMultipleErrors full = renderBox . prettyPrintMultipleErrorsBox full
1184+
prettyPrintMultipleErrors full = unlines . map renderBox . prettyPrintMultipleErrorsBox full
11851185

11861186
-- |
11871187
-- Pretty print multiple warnings
11881188
--
1189-
prettyPrintMultipleWarnings :: Bool -> MultipleErrors -> String
1190-
prettyPrintMultipleWarnings full = renderBox . prettyPrintMultipleWarningsBox full
1189+
prettyPrintMultipleWarnings :: Bool -> MultipleErrors -> String
1190+
prettyPrintMultipleWarnings full = unlines . map renderBox . prettyPrintMultipleWarningsBox full
11911191

11921192
-- | Pretty print warnings as a Box
1193-
prettyPrintMultipleWarningsBox :: Bool -> MultipleErrors -> Box.Box
1193+
prettyPrintMultipleWarningsBox :: Bool -> MultipleErrors -> [Box.Box]
11941194
prettyPrintMultipleWarningsBox full = prettyPrintMultipleErrorsWith Warning "Warning found:" "Warning" full
11951195

11961196
-- | Pretty print errors as a Box
1197-
prettyPrintMultipleErrorsBox :: Bool -> MultipleErrors -> Box.Box
1197+
prettyPrintMultipleErrorsBox :: Bool -> MultipleErrors -> [Box.Box]
11981198
prettyPrintMultipleErrorsBox full = prettyPrintMultipleErrorsWith Error "Error found:" "Error" full
11991199

1200-
prettyPrintMultipleErrorsWith :: Level -> String -> String -> Bool -> MultipleErrors -> Box.Box
1200+
prettyPrintMultipleErrorsWith :: Level -> String -> String -> Bool -> MultipleErrors -> [Box.Box]
12011201
prettyPrintMultipleErrorsWith level intro _ full (MultipleErrors [e]) =
12021202
let result = prettyPrintSingleError full level True e
1203-
in Box.vcat Box.left [ Box.text intro
1204-
, result
1205-
]
1203+
in [ Box.vcat Box.left [ Box.text intro
1204+
, result
1205+
]
1206+
]
12061207
prettyPrintMultipleErrorsWith level _ intro full (MultipleErrors es) =
12071208
let result = map (prettyPrintSingleError full level True) es
1208-
in Box.vsep 1 Box.left $ concat $ zipWith withIntro [1 :: Int ..] result
1209+
in concat $ zipWith withIntro [1 :: Int ..] result
12091210
where
12101211
withIntro i err = [ Box.text (intro ++ " " ++ show i ++ " of " ++ show (length es) ++ ":")
12111212
, Box.moveRight 2 err

src/Language/PureScript/Publish/ErrorsWarnings.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ displayUserError e = case e of
190190
CompileError err ->
191191
vcat
192192
[ para "Compile error:"
193-
, indented (P.prettyPrintMultipleErrorsBox False err)
193+
, indented (vcat (P.prettyPrintMultipleErrorsBox False err))
194194
]
195195
DirtyWorkingTree ->
196196
para (

0 commit comments

Comments
 (0)