
#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