Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC Commits: 16014bf8 by Hécate Kleidukos at 2025-05-28T20:09:34-04:00 Expose all of Backtraces' internals for ghc-internal Closes #26049 - - - - - e4602479 by Ryan Hendrickson at 2025-05-30T09:52:18-04:00 haddock: Fix links to type operators - - - - - 399f49c6 by Mario Blažević at 2025-05-30T09:52:29-04:00 Introduce parenBreakableList and use it in ppHsContext - - - - - 14 changed files: - libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs - utils/haddock/haddock-api/resources/html/Linuwial.std-theme/linuwial.css - utils/haddock/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs - utils/haddock/haddock-api/src/Haddock/Backends/Xhtml/Utils.hs - utils/haddock/haddock-api/src/Haddock/Interface/LexParseRn.hs - utils/haddock/html-test/ref/Bug1004.html - utils/haddock/html-test/ref/Bug548.html - utils/haddock/html-test/ref/Bug973.html - utils/haddock/html-test/ref/Hash.html - utils/haddock/html-test/ref/ImplicitParams.html - utils/haddock/html-test/ref/Instances.html - utils/haddock/html-test/ref/PatternSyns.html - utils/haddock/html-test/ref/TypeOperators.html - utils/haddock/html-test/src/TypeOperators.hs Changes: ===================================== libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs ===================================== @@ -3,16 +3,7 @@ {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RankNTypes #-} -module GHC.Internal.Exception.Backtrace - ( -- * Backtrace mechanisms - BacktraceMechanism(..) - , getBacktraceMechanismState - , setBacktraceMechanismState - -- * Collecting backtraces - , Backtraces(..) - , displayBacktraces - , collectBacktraces - ) where +module GHC.Internal.Exception.Backtrace where import GHC.Internal.Base import GHC.Internal.Data.OldList ===================================== utils/haddock/haddock-api/resources/html/Linuwial.std-theme/linuwial.css ===================================== @@ -571,10 +571,15 @@ table.info { margin-left: 0; } +#interface span.unbreakable, #interface td.src { white-space: nowrap; } +#interface span.breakable { + white-space: pre-wrap; +} + /* @end */ /* @group Main Content */ ===================================== utils/haddock/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs ===================================== @@ -735,7 +735,7 @@ ppContext cxt unicode qual emptyCtxts = ppContextNoLocs (map unLoc cxt) unicode ppHsContext :: [HsType DocNameI] -> Unicode -> Qualification -> Html ppHsContext [] _ _ = noHtml ppHsContext [p] unicode qual = ppCtxType unicode qual p -ppHsContext cxt unicode qual = parenList (map (ppType unicode qual HideEmptyContexts) cxt) +ppHsContext cxt unicode qual = parenBreakableList (map (ppType unicode qual HideEmptyContexts) cxt) ------------------------------------------------------------------------------- ===================================== utils/haddock/haddock-api/src/Haddock/Backends/Xhtml/Utils.hs ===================================== @@ -29,6 +29,7 @@ module Haddock.Backends.Xhtml.Utils , pabrackets , parens , parenList + , parenBreakableList , ubxParenList , ubxSumList , arrow @@ -176,6 +177,10 @@ punctuate h (d0 : ds) = go d0 ds go d [] = [d] go d (e : es) = (d +++ h) : go e es +parenBreakableList :: [Html] -> Html +parenBreakableList = (thespan ! [theclass "breakable"]) . parens . hsep . punctuate comma + . map (thespan ! [theclass "unbreakable"]) + parenList :: [Html] -> Html parenList = parens . hsep . punctuate comma ===================================== utils/haddock/haddock-api/src/Haddock/Interface/LexParseRn.hs ===================================== @@ -155,6 +155,7 @@ rename sDocContext renamer = rn | otherwise = isTermVarOrFieldNameSpace typeNsChoices | isDataOcc occ = isTcClsNameSpace + | isSymOcc occ = isTcClsNameSpace | otherwise = isTvNameSpace -- Generate the choices for the possible kind of thing this -- is. We narrow down the possibilities with the namespace (if ===================================== utils/haddock/html-test/ref/Bug1004.html ===================================== @@ -304,11 +304,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Foldable1:2" ></span - > (<a href="#" title="Data.Foldable1" - >Foldable1</a - > f, <a href="#" title="Data.Foldable1" - >Foldable1</a - > g) => <a href="#" title="Data.Foldable1" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Foldable1" + >Foldable1</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Foldable1" + >Foldable1</a + > g</span + >)</span + > => <a href="#" title="Data.Foldable1" >Foldable1</a > (<a href="#" title="Bug1004" >Product</a @@ -459,11 +465,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Eq1:3" ></span - > (<a href="#" title="Data.Functor.Classes" - >Eq1</a - > f, <a href="#" title="Data.Functor.Classes" - >Eq1</a - > g) => <a href="#" title="Data.Functor.Classes" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Eq1</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Eq1</a + > g</span + >)</span + > => <a href="#" title="Data.Functor.Classes" >Eq1</a > (<a href="#" title="Bug1004" >Product</a @@ -513,11 +525,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Ord1:4" ></span - > (<a href="#" title="Data.Functor.Classes" - >Ord1</a - > f, <a href="#" title="Data.Functor.Classes" - >Ord1</a - > g) => <a href="#" title="Data.Functor.Classes" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Ord1</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Ord1</a + > g</span + >)</span + > => <a href="#" title="Data.Functor.Classes" >Ord1</a > (<a href="#" title="Bug1004" >Product</a @@ -567,11 +585,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Read1:5" ></span - > (<a href="#" title="Data.Functor.Classes" - >Read1</a - > f, <a href="#" title="Data.Functor.Classes" - >Read1</a - > g) => <a href="#" title="Data.Functor.Classes" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Read1</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Read1</a + > g</span + >)</span + > => <a href="#" title="Data.Functor.Classes" >Read1</a > (<a href="#" title="Bug1004" >Product</a @@ -669,11 +693,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Show1:6" ></span - > (<a href="#" title="Data.Functor.Classes" - >Show1</a - > f, <a href="#" title="Data.Functor.Classes" - >Show1</a - > g) => <a href="#" title="Data.Functor.Classes" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Show1</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Functor.Classes" + >Show1</a + > g</span + >)</span + > => <a href="#" title="Data.Functor.Classes" >Show1</a > (<a href="#" title="Bug1004" >Product</a @@ -743,11 +773,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Contravariant:7" ></span - > (<a href="#" title="Data.Functor.Contravariant" - >Contravariant</a - > f, <a href="#" title="Data.Functor.Contravariant" - >Contravariant</a - > g) => <a href="#" title="Data.Functor.Contravariant" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Functor.Contravariant" + >Contravariant</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Functor.Contravariant" + >Contravariant</a + > g</span + >)</span + > => <a href="#" title="Data.Functor.Contravariant" >Contravariant</a > (<a href="#" title="Bug1004" >Product</a @@ -799,11 +835,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Alternative:8" ></span - > (<a href="#" title="Control.Applicative" - >Alternative</a - > f, <a href="#" title="Control.Applicative" - >Alternative</a - > g) => <a href="#" title="Control.Applicative" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Applicative" + >Alternative</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Control.Applicative" + >Alternative</a + > g</span + >)</span + > => <a href="#" title="Control.Applicative" >Alternative</a > (<a href="#" title="Bug1004" >Product</a @@ -879,11 +921,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Applicative:9" ></span - > (<a href="#" title="Control.Applicative" - >Applicative</a - > f, <a href="#" title="Control.Applicative" - >Applicative</a - > g) => <a href="#" title="Control.Applicative" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Applicative" + >Applicative</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Control.Applicative" + >Applicative</a + > g</span + >)</span + > => <a href="#" title="Control.Applicative" >Applicative</a > (<a href="#" title="Bug1004" >Product</a @@ -975,11 +1023,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Functor:10" ></span - > (<a href="#" title="Control.Monad" - >Functor</a - > f, <a href="#" title="Control.Monad" - >Functor</a - > g) => <a href="#" title="Control.Monad" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Monad" + >Functor</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Control.Monad" + >Functor</a + > g</span + >)</span + > => <a href="#" title="Control.Monad" >Functor</a > (<a href="#" title="Bug1004" >Product</a @@ -1035,11 +1089,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Monad:11" ></span - > (<a href="#" title="Control.Monad" - >Monad</a - > f, <a href="#" title="Control.Monad" - >Monad</a - > g) => <a href="#" title="Control.Monad" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Monad" + >Monad</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Control.Monad" + >Monad</a + > g</span + >)</span + > => <a href="#" title="Control.Monad" >Monad</a > (<a href="#" title="Bug1004" >Product</a @@ -1107,11 +1167,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:MonadPlus:12" ></span - > (<a href="#" title="Control.Monad" - >MonadPlus</a - > f, <a href="#" title="Control.Monad" - >MonadPlus</a - > g) => <a href="#" title="Control.Monad" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Monad" + >MonadPlus</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Control.Monad" + >MonadPlus</a + > g</span + >)</span + > => <a href="#" title="Control.Monad" >MonadPlus</a > (<a href="#" title="Bug1004" >Product</a @@ -1167,11 +1233,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:MonadFix:13" ></span - > (<a href="#" title="Control.Monad.Fix" - >MonadFix</a - > f, <a href="#" title="Control.Monad.Fix" - >MonadFix</a - > g) => <a href="#" title="Control.Monad.Fix" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Monad.Fix" + >MonadFix</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Control.Monad.Fix" + >MonadFix</a + > g</span + >)</span + > => <a href="#" title="Control.Monad.Fix" >MonadFix</a > (<a href="#" title="Bug1004" >Product</a @@ -1217,11 +1289,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:MonadZip:14" ></span - > (<a href="#" title="Control.Monad.Zip" - >MonadZip</a - > f, <a href="#" title="Control.Monad.Zip" - >MonadZip</a - > g) => <a href="#" title="Control.Monad.Zip" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Monad.Zip" + >MonadZip</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Control.Monad.Zip" + >MonadZip</a + > g</span + >)</span + > => <a href="#" title="Control.Monad.Zip" >MonadZip</a > (<a href="#" title="Bug1004" >Product</a @@ -1293,11 +1371,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Foldable:15" ></span - > (<a href="#" title="Data.Foldable" - >Foldable</a - > f, <a href="#" title="Data.Foldable" - >Foldable</a - > g) => <a href="#" title="Data.Foldable" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Foldable" + >Foldable</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Foldable" + >Foldable</a + > g</span + >)</span + > => <a href="#" title="Data.Foldable" >Foldable</a > (<a href="#" title="Bug1004" >Product</a @@ -1491,11 +1575,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Traversable:16" ></span - > (<a href="#" title="Data.Traversable" - >Traversable</a - > f, <a href="#" title="Data.Traversable" - >Traversable</a - > g) => <a href="#" title="Data.Traversable" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Traversable" + >Traversable</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Traversable" + >Traversable</a + > g</span + >)</span + > => <a href="#" title="Data.Traversable" >Traversable</a > (<a href="#" title="Bug1004" >Product</a @@ -1579,11 +1669,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Monoid:17" ></span - > (<a href="#" title="Data.Monoid" - >Monoid</a - > (f a), <a href="#" title="Data.Monoid" - >Monoid</a - > (g a)) => <a href="#" title="Data.Monoid" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Monoid" + >Monoid</a + > (f a)</span + >, <span class="unbreakable" + ><a href="#" title="Data.Monoid" + >Monoid</a + > (g a)</span + >)</span + > => <a href="#" title="Data.Monoid" >Monoid</a > (<a href="#" title="Bug1004" >Product</a @@ -1649,11 +1745,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Semigroup:18" ></span - > (<a href="#" title="Prelude" - >Semigroup</a - > (f a), <a href="#" title="Prelude" - >Semigroup</a - > (g a)) => <a href="#" title="Prelude" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Prelude" + >Semigroup</a + > (f a)</span + >, <span class="unbreakable" + ><a href="#" title="Prelude" + >Semigroup</a + > (g a)</span + >)</span + > => <a href="#" title="Prelude" >Semigroup</a > (<a href="#" title="Bug1004" >Product</a @@ -1725,11 +1827,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Eq:19" ></span - > (<a href="#" title="Data.Eq" - >Eq</a - > (f a), <a href="#" title="Data.Eq" - >Eq</a - > (g a)) => <a href="#" title="Data.Eq" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Eq" + >Eq</a + > (f a)</span + >, <span class="unbreakable" + ><a href="#" title="Data.Eq" + >Eq</a + > (g a)</span + >)</span + > => <a href="#" title="Data.Eq" >Eq</a > (<a href="#" title="Bug1004" >Product</a @@ -1789,11 +1897,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Ord:20" ></span - > (<a href="#" title="Data.Ord" - >Ord</a - > (f a), <a href="#" title="Data.Ord" - >Ord</a - > (g a)) => <a href="#" title="Data.Ord" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Ord" + >Ord</a + > (f a)</span + >, <span class="unbreakable" + ><a href="#" title="Data.Ord" + >Ord</a + > (g a)</span + >)</span + > => <a href="#" title="Data.Ord" >Ord</a > (<a href="#" title="Bug1004" >Product</a @@ -1913,19 +2027,33 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Data:21" ></span - > (<a href="#" title="Data.Dynamic" - >Typeable</a - > a, <a href="#" title="Data.Dynamic" - >Typeable</a - > f, <a href="#" title="Data.Dynamic" - >Typeable</a - > g, <a href="#" title="Data.Dynamic" - >Typeable</a - > k, <a href="#" title="Data.Data" - >Data</a - > (f a), <a href="#" title="Data.Data" - >Data</a - > (g a)) => <a href="#" title="Data.Data" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Dynamic" + >Typeable</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Data.Dynamic" + >Typeable</a + > f</span + >, <span class="unbreakable" + ><a href="#" title="Data.Dynamic" + >Typeable</a + > g</span + >, <span class="unbreakable" + ><a href="#" title="Data.Dynamic" + >Typeable</a + > k</span + >, <span class="unbreakable" + ><a href="#" title="Data.Data" + >Data</a + > (f a)</span + >, <span class="unbreakable" + ><a href="#" title="Data.Data" + >Data</a + > (g a)</span + >)</span + > => <a href="#" title="Data.Data" >Data</a > (<a href="#" title="Bug1004" >Product</a @@ -2027,11 +2155,17 @@ >Typeable</a > t => (<span class="keyword" >forall</span - > d e. (<a href="#" title="Data.Data" - >Data</a - > d, <a href="#" title="Data.Data" - >Data</a - > e) => c (t d e)) -> <a href="#" title="Data.Maybe" + > d e. <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Data" + >Data</a + > d</span + >, <span class="unbreakable" + ><a href="#" title="Data.Data" + >Data</a + > e</span + >)</span + > => c (t d e)) -> <a href="#" title="Data.Maybe" >Maybe</a > (c (<a href="#" title="Bug1004" >Product</a @@ -2315,11 +2449,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Read:23" ></span - > (<a href="#" title="Prelude" - >Read</a - > (f a), <a href="#" title="Prelude" - >Read</a - > (g a)) => <a href="#" title="Prelude" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Prelude" + >Read</a + > (f a)</span + >, <span class="unbreakable" + ><a href="#" title="Prelude" + >Read</a + > (g a)</span + >)</span + > => <a href="#" title="Prelude" >Read</a > (<a href="#" title="Bug1004" >Product</a @@ -2397,11 +2537,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Product:Show:24" ></span - > (<a href="#" title="Prelude" - >Show</a - > (f a), <a href="#" title="Prelude" - >Show</a - > (g a)) => <a href="#" title="Prelude" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Prelude" + >Show</a + > (f a)</span + >, <span class="unbreakable" + ><a href="#" title="Prelude" + >Show</a + > (g a)</span + >)</span + > => <a href="#" title="Prelude" >Show</a > (<a href="#" title="Bug1004" >Product</a ===================================== utils/haddock/html-test/ref/Bug548.html ===================================== @@ -252,11 +252,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WrappedArrow:Alternative:2" ></span - > (<a href="#" title="Control.Arrow" - >ArrowZero</a - > a, <a href="#" title="Control.Arrow" - >ArrowPlus</a - > a) => <a href="#" title="Control.Applicative" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Control.Arrow" + >ArrowZero</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Control.Arrow" + >ArrowPlus</a + > a</span + >)</span + > => <a href="#" title="Control.Applicative" >Alternative</a > (<a href="#" title="Bug548" >WrappedArrow</a @@ -484,15 +490,25 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WrappedArrow:Data:5" ></span - > (<a href="#" title="Data.Dynamic" - >Typeable</a - > a, <a href="#" title="Data.Dynamic" - >Typeable</a - > b, <a href="#" title="Data.Dynamic" - >Typeable</a - > c, <a href="#" title="Data.Data" - >Data</a - > (a b c)) => <a href="#" title="Data.Data" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Dynamic" + >Typeable</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Data.Dynamic" + >Typeable</a + > b</span + >, <span class="unbreakable" + ><a href="#" title="Data.Dynamic" + >Typeable</a + > c</span + >, <span class="unbreakable" + ><a href="#" title="Data.Data" + >Data</a + > (a b c)</span + >)</span + > => <a href="#" title="Data.Data" >Data</a > (<a href="#" title="Bug548" >WrappedArrow</a @@ -594,11 +610,17 @@ >Typeable</a > t => (<span class="keyword" >forall</span - > d e. (<a href="#" title="Data.Data" - >Data</a - > d, <a href="#" title="Data.Data" - >Data</a - > e) => c0 (t d e)) -> <a href="#" title="Data.Maybe" + > d e. <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Data" + >Data</a + > d</span + >, <span class="unbreakable" + ><a href="#" title="Data.Data" + >Data</a + > e</span + >)</span + > => c0 (t d e)) -> <a href="#" title="Data.Maybe" >Maybe</a > (c0 (<a href="#" title="Bug548" >WrappedArrow</a ===================================== utils/haddock/html-test/ref/Bug973.html ===================================== @@ -56,21 +56,33 @@ ><li class="src short" ><a href="#" >showRead</a - > :: (<a href="#" title="Prelude" - >Show</a - > a, <a href="#" title="Prelude" - >Read</a - > b) => a -> b</li + > :: <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Prelude" + >Show</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Prelude" + >Read</a + > b</span + >)</span + > => a -> b</li ><li class="src short" ><a href="#" >showRead'</a > :: <span class="keyword" >forall</span - > b a. (<a href="#" title="Prelude" - >Show</a - > a, <a href="#" title="Prelude" - >Read</a - > b) => a -> b</li + > b a. <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Prelude" + >Show</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Prelude" + >Read</a + > b</span + >)</span + > => a -> b</li ></ul ></details ></div @@ -90,11 +102,17 @@ ><table ><tr ><td class="src" - >:: (<a href="#" title="Prelude" - >Show</a - > a, <a href="#" title="Prelude" - >Read</a - > b)</td + >:: <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Prelude" + >Show</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Prelude" + >Read</a + > b</span + >)</span + ></td ><td class="doc empty" > </td ></tr @@ -132,11 +150,17 @@ ><td class="src" >:: <span class="keyword" >forall</span - > b a. (<a href="#" title="Prelude" - >Show</a - > a, <a href="#" title="Prelude" - >Read</a - > b)</td + > b a. <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Prelude" + >Show</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Prelude" + >Read</a + > b</span + >)</span + ></td ><td class="doc empty" > </td ></tr ===================================== utils/haddock/html-test/ref/Hash.html ===================================== @@ -99,11 +99,17 @@ ><li class="src short" ><a href="#" >new</a - > :: (<a href="#" title="Data.Eq" - >Eq</a - > key, <a href="#" title="Hash" - >Hash</a - > key) => <a href="#" title="Data.Int" + > :: <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Eq" + >Eq</a + > key</span + >, <span class="unbreakable" + ><a href="#" title="Hash" + >Hash</a + > key</span + >)</span + > => <a href="#" title="Data.Int" >Int</a > -> <a href="#" title="Prelude" >IO</a @@ -113,11 +119,17 @@ ><li class="src short" ><a href="#" >insert</a - > :: (<a href="#" title="Data.Eq" - >Eq</a - > key, <a href="#" title="Hash" - >Hash</a - > key) => key -> val -> <a href="#" title="Prelude" + > :: <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Eq" + >Eq</a + > key</span + >, <span class="unbreakable" + ><a href="#" title="Hash" + >Hash</a + > key</span + >)</span + > => key -> val -> <a href="#" title="Prelude" >IO</a > ()</li ><li class="src short" @@ -191,11 +203,17 @@ ><p class="src" ><a id="v:new" class="def" >new</a - > :: (<a href="#" title="Data.Eq" - >Eq</a - > key, <a href="#" title="Hash" - >Hash</a - > key) => <a href="#" title="Data.Int" + > :: <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Eq" + >Eq</a + > key</span + >, <span class="unbreakable" + ><a href="#" title="Hash" + >Hash</a + > key</span + >)</span + > => <a href="#" title="Data.Int" >Int</a > -> <a href="#" title="Prelude" >IO</a @@ -213,11 +231,17 @@ ><p class="src" ><a id="v:insert" class="def" >insert</a - > :: (<a href="#" title="Data.Eq" - >Eq</a - > key, <a href="#" title="Hash" - >Hash</a - > key) => key -> val -> <a href="#" title="Prelude" + > :: <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Eq" + >Eq</a + > key</span + >, <span class="unbreakable" + ><a href="#" title="Hash" + >Hash</a + > key</span + >)</span + > => key -> val -> <a href="#" title="Prelude" >IO</a > () <a href="#" class="selflink" >#</a @@ -395,11 +419,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Hash:Hash:3" ></span - > (<a href="#" title="Hash" - >Hash</a - > a, <a href="#" title="Hash" - >Hash</a - > b) => <a href="#" title="Hash" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Hash" + >Hash</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Hash" + >Hash</a + > b</span + >)</span + > => <a href="#" title="Hash" >Hash</a > (a, b)</span > <a href="#" class="selflink" ===================================== utils/haddock/html-test/ref/ImplicitParams.html ===================================== @@ -91,11 +91,17 @@ ><p class="src" ><a id="v:d" class="def" >d</a - > :: (?x :: <a href="#" title="ImplicitParams" - >X</a - >, ?y :: <a href="#" title="ImplicitParams" - >X</a - >) => (<a href="#" title="ImplicitParams" + > :: <span class="breakable" + >(<span class="unbreakable" + >?x :: <a href="#" title="ImplicitParams" + >X</a + ></span + >, <span class="unbreakable" + >?y :: <a href="#" title="ImplicitParams" + >X</a + ></span + >)</span + > => (<a href="#" title="ImplicitParams" >X</a >, <a href="#" title="ImplicitParams" >X</a ===================================== utils/haddock/html-test/ref/Instances.html ===================================== @@ -438,11 +438,17 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:5" ></span - > (<a href="#" title="Data.Eq" - >Eq</a - > a, <a href="#" title="Instances" - >Foo</a - > f) => <a href="#" title="Instances" + > <span class="breakable" + >(<span class="unbreakable" + ><a href="#" title="Data.Eq" + >Eq</a + > a</span + >, <span class="unbreakable" + ><a href="#" title="Instances" + >Foo</a + > f</span + >)</span + > => <a href="#" title="Instances" >Foo</a > ((,) (f a))</span > <a href="#" class="selflink" ===================================== utils/haddock/html-test/ref/PatternSyns.html ===================================== @@ -308,8 +308,10 @@ ></p ><div class="doc" ><p - >Doc for (<code class="inline-code" - >><</code + >Doc for (<code + ><a href="#" title="PatternSyns" + >><</a + ></code >)</p ></div ><div class="subs constructors" ===================================== utils/haddock/html-test/ref/TypeOperators.html ===================================== @@ -48,6 +48,34 @@ ><p class="caption" >TypeOperators</p ></div + ><div id="description" + ><p class="caption" + >Description</p + ><div class="doc" + ><p + >This documentation refers to <code + ><a href="#" title="Data.Type.Equality" + >~</a + ></code + >, <code + ><a href="#" title="TypeOperators" + >:-:</a + ></code + >, <code + ><a href="#" title="TypeOperators" + >:+:</a + ></code + >, <code + ><a href="#" title="TypeOperators" + ><=></a + ></code + >, and <code + ><a href="#" title="TypeOperators" + >|||</a + ></code + >.</p + ></div + ></div ><div id="interface" ><h1 >Documentation</h1 @@ -142,6 +170,18 @@ ></p ></div ><div class="top" + ><p class="src" + ><span class="keyword" + >type</span + > <a id="t:-124--124--124-" class="def" + >(|||)</a + > = <a href="#" title="Data.Either" + >Either</a + > <a href="#" class="selflink" + >#</a + ></p + ></div + ><div class="top" ><p class="src" ><a id="v:biO" class="def" >biO</a @@ -175,11 +215,17 @@ ><p class="src" ><a id="v:g" class="def" >g</a - > :: (a <a href="#" title="Data.Type.Equality" - >~</a - > b, b <a href="#" title="Data.Type.Equality" - >~</a - > c) => a -> c <a href="#" class="selflink" + > :: <span class="breakable" + >(<span class="unbreakable" + >a <a href="#" title="Data.Type.Equality" + >~</a + > b</span + >, <span class="unbreakable" + >b <a href="#" title="Data.Type.Equality" + >~</a + > c</span + >)</span + > => a -> c <a href="#" class="selflink" >#</a ></p ></div @@ -201,13 +247,19 @@ ><p class="src" ><a id="v:y" class="def" >y</a - > :: (a <a href="#" title="TypeOperators" - ><=></a - > a, <a href="#" title="TypeOperators" - >Op</a - > a a <a href="#" title="TypeOperators" - ><=></a - > a) => a <a href="#" class="selflink" + > :: <span class="breakable" + >(<span class="unbreakable" + >a <a href="#" title="TypeOperators" + ><=></a + > a</span + >, <span class="unbreakable" + ><a href="#" title="TypeOperators" + >Op</a + > a a <a href="#" title="TypeOperators" + ><=></a + > a</span + >)</span + > => a <a href="#" class="selflink" >#</a ></p ></div ===================================== utils/haddock/html-test/src/TypeOperators.hs ===================================== @@ -1,5 +1,6 @@ {-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeOperators, GADTs, MultiParamTypeClasses, FlexibleContexts #-} +-- | This documentation refers to '~', ':-:', ':+:', '<=>', and '|||'. module TypeOperators where data a :-: b @@ -12,6 +13,8 @@ newtype (g `O` f) a = O { unO :: g (f a) } class a <=> b +type (|||) = Either + biO :: (g `O` f) a biO = undefined View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/fef1a930cea05dc9b0bfa527ec66e11... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/fef1a930cea05dc9b0bfa527ec66e11... You're receiving this email because of your account on gitlab.haskell.org.