git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix #1889, improve performance by avoiding whitespace operations on large strings
6bb8d5ePhil Freeman
src/Language/PureScript/Errors.hs+11−10
@@ -1181,31 +1181,32 @@ prettyPrintRef (PositionedDeclarationRef _ _ ref) = prettyPrintExport ref
1181-- Pretty print multiple errors
1181-- Pretty print multiple errors
1182--
1182--
1183prettyPrintMultipleErrors :: Bool -> MultipleErrors -> String
1183prettyPrintMultipleErrors :: Bool -> MultipleErrors -> String
1184−prettyPrintMultipleErrors full = renderBox . prettyPrintMultipleErrorsBox full
1184+prettyPrintMultipleErrors full = unlines . map renderBox . prettyPrintMultipleErrorsBox full
1185
1185
1186-- |
1186-- |
1187-- Pretty print multiple warnings
1187-- Pretty print multiple warnings
1188--
1188--
1189−prettyPrintMultipleWarnings :: Bool -> MultipleErrors -> String
1189+prettyPrintMultipleWarnings :: Bool -> MultipleErrors -> String
1190−prettyPrintMultipleWarnings full = renderBox . prettyPrintMultipleWarningsBox full
1190+prettyPrintMultipleWarnings full = unlines . map renderBox . prettyPrintMultipleWarningsBox full
1191
1191
1192-- | Pretty print warnings as a Box
1192-- | Pretty print warnings as a Box
1193−prettyPrintMultipleWarningsBox :: Bool -> MultipleErrors -> Box.Box
1193+prettyPrintMultipleWarningsBox :: Bool -> MultipleErrors -> [Box.Box]
1194prettyPrintMultipleWarningsBox full = prettyPrintMultipleErrorsWith Warning "Warning found:" "Warning" full
1194prettyPrintMultipleWarningsBox full = prettyPrintMultipleErrorsWith Warning "Warning found:" "Warning" full
1195
1195
1196-- | Pretty print errors as a Box
1196-- | Pretty print errors as a Box
1197−prettyPrintMultipleErrorsBox :: Bool -> MultipleErrors -> Box.Box
1197+prettyPrintMultipleErrorsBox :: Bool -> MultipleErrors -> [Box.Box]
1198prettyPrintMultipleErrorsBox full = prettyPrintMultipleErrorsWith Error "Error found:" "Error" full
1198prettyPrintMultipleErrorsBox full = prettyPrintMultipleErrorsWith Error "Error found:" "Error" full
1199
1199
1200−prettyPrintMultipleErrorsWith :: Level -> String -> String -> Bool -> MultipleErrors -> Box.Box
1200+prettyPrintMultipleErrorsWith :: Level -> String -> String -> Bool -> MultipleErrors -> [Box.Box]
1201prettyPrintMultipleErrorsWith level intro _ full (MultipleErrors [e]) =
1201prettyPrintMultipleErrorsWith level intro _ full (MultipleErrors [e]) =
1202 let result = prettyPrintSingleError full level True e
1202 let result = prettyPrintSingleError full level True e
1203− in Box.vcat Box.left [ Box.text intro
1203+ in [ Box.vcat Box.left [ Box.text intro
1204− , result
1204+ , result
1205+ ]
1205− ]
1206+ ]
1206prettyPrintMultipleErrorsWith level _ intro full (MultipleErrors es) =
1207prettyPrintMultipleErrorsWith level _ intro full (MultipleErrors es) =
1207 let result = map (prettyPrintSingleError full level True) es
1208 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
1209 where
1210 where
1210 withIntro i err = [ Box.text (intro ++ " " ++ show i ++ " of " ++ show (length es) ++ ":")
1211 withIntro i err = [ Box.text (intro ++ " " ++ show i ++ " of " ++ show (length es) ++ ":")
1211 , Box.moveRight 2 err
1212 , Box.moveRight 2 err
src/Language/PureScript/Publish/ErrorsWarnings.hs+1−1
@@ -190,7 +190,7 @@ displayUserError e = case e of
190 CompileError err ->
190 CompileError err ->
191 vcat
191 vcat
192 [ para "Compile error:"
192 [ para "Compile error:"
193− , indented (P.prettyPrintMultipleErrorsBox False err)
193+ , indented (vcat (P.prettyPrintMultipleErrorsBox False err))
194 ]
194 ]
195 DirtyWorkingTree ->
195 DirtyWorkingTree ->
196 para (
196 para (