Skip to content

Need to generate Typable info for promoted data constructors

Trac #10052 (closed) isn't relevant for HEAD, because HEAD generates implicit Typeable bindings for everything. But in testing

{-# LANGUAGE PolyKinds, DataKinds #-}
module Foo where
import Data.Typeable

data T = A | B Int

bar :: TypeRep
bar = typeRep (Proxy :: Proxy '[True])

I discovered that we aren't generating tycon-rep bindings for promoted data constructors. As a result we get

GHC error in desugarer lookup in Foo:
  Can't find interface-file declaration for variable tc'[]
    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

In particular TcTypeable.mkTypeableBinds doesn't generate the bindings for the tc'[] and tc':.

It's not hard to fix this, but it will add more top-level declarations for each data type decl.

Trac metadata
Trac field Value
Version 7.10.2
Type Bug
TypeOfFailure OtherFailure
Priority high
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information