[GHC] #14963: ghci -fdefer-type-errors can't run IO action from another module

GHC ghc-devs at haskell.org
Wed Jun 6 17:47:55 UTC 2018


#14963: ghci -fdefer-type-errors can't run IO action from another module
-------------------------------------+-------------------------------------
        Reporter:  elaforge          |                Owner:  tdammers
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.4.2
       Component:  GHCi              |              Version:  8.4.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by tdammers):

 Another data point; the Core ghci generates with `-fdefer-type-errors` is
 slightly different from the normal output:

 {{{#!diff
 --- Foo-defer.dump-simpl        2018-06-06 17:53:34.436841703 +0200
 +++ Foo.dump-simpl      2018-06-06 19:44:00.385228438 +0200
 @@ -1,39 +1,39 @@

  ==================== Tidy Core ====================
 -2018-06-06 15:53:34.440330463 UTC
 +2018-06-06 17:44:00.38910864 UTC

  Result size of Tidy Core
    = {terms: 19, types: 9, coercions: 0, joins: 0/0}

 --- RHS size: {terms: 4, types: 2, coercions: 0, joins: 0/0}
 -test :: IO Int
 -[GblId]
 -test
 -  = break<0>() return @ IO GHC.Base.$fMonadIO @ Int (GHC.Types.I# 1#)
 -
  -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
 -$trModule1_r1Ss :: GHC.Prim.Addr#
 +$trModule1_r1Sr :: GHC.Prim.Addr#
  [GblId, Caf=NoCafRefs, Unf=OtherCon []]
 -$trModule1_r1Ss = "main"#
 +$trModule1_r1Sr = "main"#

  -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
 -$trModule2_r1SD :: GHC.Types.TrName
 +$trModule2_r1SC :: GHC.Types.TrName
  [GblId, Caf=NoCafRefs, Unf=OtherCon []]
 -$trModule2_r1SD = GHC.Types.TrNameS $trModule1_r1Ss
 +$trModule2_r1SC = GHC.Types.TrNameS $trModule1_r1Sr

  -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
 -$trModule3_r1SE :: GHC.Prim.Addr#
 +$trModule3_r1SD :: GHC.Prim.Addr#
  [GblId, Caf=NoCafRefs, Unf=OtherCon []]
 -$trModule3_r1SE = "Main"#
 +$trModule3_r1SD = "Main"#

  -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
 -$trModule4_r1SF :: GHC.Types.TrName
 +$trModule4_r1SE :: GHC.Types.TrName
  [GblId, Caf=NoCafRefs, Unf=OtherCon []]
 -$trModule4_r1SF = GHC.Types.TrNameS $trModule3_r1SE
 +$trModule4_r1SE = GHC.Types.TrNameS $trModule3_r1SD

  -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
  Main.$trModule :: GHC.Types.Module
  [GblId, Caf=NoCafRefs, Unf=OtherCon []]
 -Main.$trModule = GHC.Types.Module $trModule2_r1SD $trModule4_r1SF
 +Main.$trModule = GHC.Types.Module $trModule2_r1SC $trModule4_r1SE
 +
 +-- RHS size: {terms: 4, types: 2, coercions: 0, joins: 0/0}
 +test :: IO Int
 +[GblId]
 +test
 +  = break<0>() return @ IO GHC.Base.$fMonadIO @ Int (GHC.Types.I# 1#)
 }}}

 The only differences however are due to uniques not matching up, and
 putting `main` first instead of last.

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


More information about the ghc-tickets mailing list