exception handling: exitWith ExitSuccess results in abnormal termination with Control.OldException
Consider this program.
import System.Exit
import Control.OldException
main = exitWith ExitSuccess `finally` return ()
It should not produce any output and return 0 as its exit code. Instead we get:
# runhaskell test.hs
exit: ExitSuccess
# echo $?
1
The problem is that finally catches the exception and rethrows it. In the process, the OldException module maps exceptions to old exceptions, but never maps them back when they're thrown.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 6.9 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |