[GHC] #11824: GHC error in desugarer lookup

GHC ghc-devs at haskell.org
Wed Apr 13 08:11:29 UTC 2016


#11824: GHC error in desugarer lookup
-------------------------------------+-------------------------------------
        Reporter:  darchon           |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.0.1
       Component:  Compiler          |              Version:  8.0.1-rc3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash                              |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by darchon):

 I've managed to reduce it even furter.

 I now have:

 Unbound/Generics/LocallyNameless.hs:
 {{{#!hs
 module Unbound.Generics.LocallyNameless where

 import Data.Typeable (Typeable)

 data Name a = Name

 class Alpha a where
   isTerm :: a -> Bool

 instance Typeable a => Alpha (Name a) where
   isTerm _ = False
 }}}

 CLaSH/Core/Type.hs:
 {{{#!hs
 module CLaSH.Core.Type where

 import Unbound.Generics.LocallyNameless (Alpha (..),Name)
 import CLaSH.Core.TyCon

 data Type = VarTy

 type TyName = Name Type

 instance Alpha Type where
   isTerm VarTy = False
 }}}

 CLaSH/Core/Type.hs-boot
 {{{#!hs
 module CLaSH.Core.Type where

 import Unbound.Generics.LocallyNameless (Name)

 data Type

 type TyName = Name Type
 }}}

 CLaSH/Core/TyCon.hs
 {{{#!hs
 {-# OPTIONS_GHC -ddump-if-trace #-}
 module CLaSH.Core.TyCon where

 import Unbound.Generics.LocallyNameless (Alpha (..))
 import {-# SOURCE #-} CLaSH.Core.Type   (TyName)

 data AlgTyConRhs
   = NewTyCon TyName

 instance Alpha AlgTyConRhs where
   isTerm (NewTyCon nm) = isTerm nm
 }}}

 And the output of -ddump-if-trace is:

 {{{
 ghci CLaSH/Core/Type.hs
 GHCi, version 8.0.0.20160411: http://www.haskell.org/ghc/  :? for help
 [1 of 4] Compiling Unbound.Generics.LocallyNameless (
 Unbound/Generics/LocallyNameless.hs, interpreted )
 [2 of 4] Compiling CLaSH.Core.Type[boot] ( CLaSH/Core/Type.hs-boot,
 interpreted )
 [3 of 4] Compiling CLaSH.Core.TyCon ( CLaSH/Core/TyCon.hs, interpreted )
 loadHiBootInterface CLaSH.Core.TyCon
 Considering whether to load Prelude
 Considering whether to load Unbound.Generics.LocallyNameless
 Considering whether to load CLaSH.Core.Type {- SOURCE -}
 updating EPS_
 Considering whether to load GHC.Base {- SYSTEM -}
 Considering whether to load GHC.Float {- SYSTEM -}
 newGlobalBinder CLaSH.Core.TyCon AlgTyConRhs
 CLaSH/Core/TyCon.hs:(7,1)-(8,19)
                 AlgTyConRhs
 newGlobalBinder CLaSH.Core.TyCon NewTyCon CLaSH/Core/TyCon.hs:8:5-19
                 NewTyCon
 Considering whether to load Unbound.Generics.LocallyNameless {- SYSTEM -}
 Considering whether to load CLaSH.Core.Type {- SYSTEM -}
 Considering whether to load Unbound.Generics.LocallyNameless {- SYSTEM -}
 Considering whether to load Unbound.Generics.LocallyNameless {- SYSTEM -}
 newGlobalBinder CLaSH.Core.TyCon $tc'NewTyCon <no location info>
                 $tc'NewTyCon
 newGlobalBinder CLaSH.Core.TyCon $WNewTyCon CLaSH/Core/TyCon.hs:8:5-19
                 $WNewTyCon
 newGlobalBinder CLaSH.Core.TyCon NewTyCon CLaSH/Core/TyCon.hs:8:5-19
                 NewTyCon
 buildDataCon 1 NewTyCon
 buildDataCon 2 NewTyCon
 newGlobalBinder CLaSH.Core.TyCon $tcAlgTyConRhs <no location info>
                 $tcAlgTyConRhs
 newGlobalBinder CLaSH.Core.TyCon $fAlphaAlgTyConRhs
 CLaSH/Core/TyCon.hs:10:10-26
                 $fAlphaAlgTyConRhs
 newGlobalBinder CLaSH.Core.TyCon $trModule CLaSH/Core/TyCon.hs:1:1
                 $trModule
 Need decl for $tcType
 Considering whether to load CLaSH.Core.Type {- SYSTEM -}
 GHC error in desugarer lookup in CLaSH.Core.TyCon:
   Can't find interface-file declaration for variable $tcType
     Probable cause: bug in .hi-boot file, or inconsistent .hi file
     Use -ddump-if-trace to get an idea of which file caused the error
 ghc: panic! (the 'impossible' happened)
   (GHC version 8.0.0.20160411 for x86_64-unknown-linux):
         initDs IOEnv failure

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
 }}}

 It seems to be a combination of the Typeable constraint, and the .hs-boot
 file. Because when I remove the Typeable constraint from:

 {{{#!hs

 instance Typeable a => Alpha (Name a) where
   isTerm _ = False
 }}}

 in Unbound/Generics/LocallyNameless.hs everything compiles successfully.

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


More information about the ghc-tickets mailing list