GHC API users can easily hit bottoming BreakArray
Recently I encountered a GHC crash exposed by ghcide, which loads modules via the GHC API and calls the desugarer with
hscTarget == HscNothing. In this case the
Coverage.addTicksToBinds can return
emptyModBreaks, which contains a bottom, as the module's
ModBreaks. Eventually if the client then calls the bytecode generator and tries to load the bytecode that results (e.g. due to the need to evaluate a Template Haskell splice) it will hit this bottom and crash.
In the case that
HscNothing we really shouldn't even be returning any
ModBreaks (N.B. this is possible as
mg_modbreaks is a
Maybe ModBreaks). This would avoid this entire failure mode.