[GHC] #16048: Show Instance for IOException discards error code

GHC ghc-devs at haskell.org
Fri Dec 14 17:23:48 UTC 2018


#16048: Show Instance for IOException discards error code
-------------------------------------+-------------------------------------
           Reporter:  andrewthad     |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.6.3
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 The `Show` instance for `IOException` currently looks like this:

 {{{
 instance Show IOException where
     showsPrec p (IOError hdl iot loc s _ fn) =
       (case fn of
          Nothing -> case hdl of
                         Nothing -> id
                         Just h  -> showsPrec p h . showString ": "
          Just name -> showString name . showString ": ") .
       (case loc of
          "" -> id
          _  -> showString loc . showString ": ") .
       showsPrec p iot .
       (case s of
          "" -> id
          _  -> showString " (" . showString s . showString ")")
 }}}

 Notice that it discards the error code (the fifth field in the data
 constructor). This means that when we call `ioError` to raise an
 `IOException`, we end up missing out on useful information. For example,
 in a project I'm working on now, I get this:

 {{{
 *** Exception: Network.Icmp.Ping: ping: permission denied (Permission
 denied)
 }}}

 But I expected to see the original error code in there as well, which
 would help me diagnose issues.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16048>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list