blob: 4f874705fa534a2f1a02863742739402c30c0fe3 (
plain) (
tree)
|
|
{-# LANGUAGE TypeFamilies, FlexibleInstances, GADTs #-}
-- This tests that we are able to extract record selectors for
-- associated types when the type itself is not exported. Making this
-- bug exhibit is very simple: simply mention a record field defined
-- inside of the associated type anywhere in the export list.
--
-- Note: ProblemCtor only shows up when T or A are exported but PolyCtor
-- only shows up when the class is exported as well, since it's polymorphic.
module Bug294 ( A, problemField, problemField', gadtField
, TP(ProblemCtor), DP(ProblemCtor'), TO'(PolyCtor)) where
data A
class T t where
data TO t :: *
data TP t :: *
t :: t
instance T A where
data TO A = TA { problemField :: A }
data TP A = ProblemCtor A
data family DO t :: *
data family DP t :: *
data instance DO A = DA { problemField' :: A }
data instance DP A = ProblemCtor' A
data GADT :: * -> * where
Ctor :: { gadtField :: A } -> GADT A
class T' t where
data TO' t :: *
instance T' a where
data TO' a = PolyCtor
|