aboutsummaryrefslogtreecommitdiff
path: root/html-test/src/Bug294.hs
diff options
context:
space:
mode:
Diffstat (limited to 'html-test/src/Bug294.hs')
-rw-r--r--html-test/src/Bug294.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/html-test/src/Bug294.hs b/html-test/src/Bug294.hs
new file mode 100644
index 00000000..4f874705
--- /dev/null
+++ b/html-test/src/Bug294.hs
@@ -0,0 +1,37 @@
+{-# 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