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  | 
