diff options
Diffstat (limited to 'html-test')
-rw-r--r-- | html-test/ref/Bug294.html | 165 | ||||
-rw-r--r-- | html-test/src/Bug294.hs | 37 |
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" + > </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" + > </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" + > </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 + > -> <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 + > -> <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 + > -> <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" + > </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 |