Skip to content

Commit b583662

Browse files
committed
avoid div by zero
1 parent aa6bb26 commit b583662

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

ghcide/src/Development/IDE/Core/ProgressReporting.hs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -126,29 +126,30 @@ delayedProgressReporting before after lspEnv optProgressStyle = do
126126
}
127127
}
128128
loop id prev = do
129-
liftIO $ sleep after
130129
current <- liftIO $ readVar inProgress
131130
let done = length $ filter (== 0) $ HMap.elems current
132131
let todo = HMap.size current
133-
let next = 100 * fromIntegral done / fromIntegral todo
134-
when (style /= NoProgress && next /= prev) $
135-
LSP.sendNotification LSP.SProgress $
136-
LSP.ProgressParams
137-
{ _token = id
138-
, _value = LSP.Report $ case style of
139-
Explicit -> LSP.WorkDoneProgressReportParams
140-
{ _cancellable = Nothing
141-
, _message = Just $ T.pack $ show done <> "/" <> show todo
142-
, _percentage = Nothing
143-
}
144-
Percentage -> LSP.WorkDoneProgressReportParams
145-
{ _cancellable = Nothing
146-
, _message = Nothing
147-
, _percentage = Just next
148-
}
149-
NoProgress -> error "unreachable"
150-
}
151-
loop id next
132+
if todo == 0 then loop id 0 else do
133+
let next = 100 * fromIntegral done / fromIntegral todo
134+
liftIO $ sleep after
135+
when (style /= NoProgress && next /= prev) $
136+
LSP.sendNotification LSP.SProgress $
137+
LSP.ProgressParams
138+
{ _token = id
139+
, _value = LSP.Report $ case style of
140+
Explicit -> LSP.WorkDoneProgressReportParams
141+
{ _cancellable = Nothing
142+
, _message = Just $ T.pack $ show done <> "/" <> show todo
143+
, _percentage = Nothing
144+
}
145+
Percentage -> LSP.WorkDoneProgressReportParams
146+
{ _cancellable = Nothing
147+
, _message = Nothing
148+
, _percentage = Just next
149+
}
150+
NoProgress -> error "unreachable"
151+
}
152+
loop id next
152153

153154
withProgressVar var file = actionBracket (f succ) (const $ f pred) . const
154155
-- This functions are deliberately eta-expanded to avoid space leaks.

0 commit comments

Comments
 (0)