aboutsummaryrefslogtreecommitdiff
path: root/html-test
diff options
context:
space:
mode:
Diffstat (limited to 'html-test')
-rw-r--r--html-test/ref/Bug294.html165
-rw-r--r--html-test/src/Bug294.hs37
2 files changed, 202 insertions, 0 deletions
diff --git a/html-test/ref/Bug294.html b/html-test/ref/Bug294.html
new file mode 100644
index 00000000..ceae2932
--- /dev/null
+++ b/html-test/ref/Bug294.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+><head
+ ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
+ /><title
+ >Bug294</title
+ ><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean"
+ /><script src="haddock-util.js" type="text/javascript"
+ ></script
+ ><script type="text/javascript"
+ >//<![CDATA[
+window.onload = function () {pageLoad();setSynopsis("mini_Bug294.html");};
+//]]>
+</script
+ ></head
+ ><body
+ ><div id="package-header"
+ ><ul class="links" id="page-menu"
+ ><li
+ ><a href=""
+ >Contents</a
+ ></li
+ ><li
+ ><a href=""
+ >Index</a
+ ></li
+ ></ul
+ ><p class="caption empty"
+ >&nbsp;</p
+ ></div
+ ><div id="content"
+ ><div id="module-header"
+ ><table class="info"
+ ><tr
+ ><th
+ >Safe Haskell</th
+ ><td
+ >Safe-Inferred</td
+ ></tr
+ ></table
+ ><p class="caption"
+ >Bug294</p
+ ></div
+ ><div id="interface"
+ ><h1
+ >Documentation</h1
+ ><div class="top"
+ ><p class="src"
+ ><span class="keyword"
+ >data</span
+ > <a name="t:A" class="def"
+ >A</a
+ ></p
+ ><div class="subs instances"
+ ><p id="control.i:A" class="caption collapser" onclick="toggleSection('i:A')"
+ >Instances</p
+ ><div id="section.i:A" class="show"
+ ><table
+ ><tr
+ ><td class="src"
+ ><span class="keyword"
+ >data</span
+ > <a href=""
+ >DP</a
+ > <a href=""
+ >A</a
+ > = <a name="v:ProblemCtor-39-" class="def"
+ >ProblemCtor'</a
+ > <a href=""
+ >A</a
+ ></td
+ ><td class="doc empty"
+ >&nbsp;</td
+ ></tr
+ ><tr
+ ><td class="src"
+ ><span class="keyword"
+ >data</span
+ > TP <a href=""
+ >A</a
+ > = <a name="v:ProblemCtor" class="def"
+ >ProblemCtor</a
+ > <a href=""
+ >A</a
+ ></td
+ ><td class="doc empty"
+ >&nbsp;</td
+ ></tr
+ ></table
+ ></div
+ ></div
+ ></div
+ ><div class="top"
+ ><p class="src"
+ ><a name="v:problemField" class="def"
+ >problemField</a
+ > :: TO <a href=""
+ >A</a
+ > -&gt; <a href=""
+ >A</a
+ ></p
+ ></div
+ ><div class="top"
+ ><p class="src"
+ ><a name="v:problemField-39-" class="def"
+ >problemField'</a
+ > :: DO <a href=""
+ >A</a
+ > -&gt; <a href=""
+ >A</a
+ ></p
+ ></div
+ ><div class="top"
+ ><p class="src"
+ ><a name="v:gadtField" class="def"
+ >gadtField</a
+ > :: GADT <a href=""
+ >A</a
+ > -&gt; <a href=""
+ >A</a
+ ></p
+ ></div
+ ><div class="top"
+ ><p class="src"
+ ><span class="keyword"
+ >data family</span
+ > <a name="t:DP" class="def"
+ >DP</a
+ > t :: *</p
+ ><div class="subs instances"
+ ><p id="control.i:DP" class="caption collapser" onclick="toggleSection('i:DP')"
+ >Instances</p
+ ><div id="section.i:DP" class="show"
+ ><table
+ ><tr
+ ><td class="src"
+ ><span class="keyword"
+ >data</span
+ > <a href=""
+ >DP</a
+ > <a href=""
+ >A</a
+ > = <a name="v:ProblemCtor-39-" class="def"
+ >ProblemCtor'</a
+ > <a href=""
+ >A</a
+ ></td
+ ><td class="doc empty"
+ >&nbsp;</td
+ ></tr
+ ></table
+ ></div
+ ></div
+ ></div
+ ></div
+ ></div
+ ><div id="footer"
+ ><p
+ >Produced by <a href=""
+ >Haddock</a
+ > version 2.15.0</p
+ ></div
+ ></body
+ ></html
+>
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