diff options
| author | Alex Biehl <alexbiehl@gmail.com> | 2017-06-23 18:30:45 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-23 18:30:45 +0200 | 
| commit | 2d919a367139482cd76398ca1e90dff6f5427779 (patch) | |
| tree | 40a7faef20a633d831d8e098f02c2b6bfbfe61c0 | |
| parent | cf7addb983bd2079b221199f8ec09c8edaeb8956 (diff) | |
Don't include names with empty subordinates in maps (#644)
These are unecessary anyway and just blow up interface size
| -rw-r--r-- | haddock-api/src/Haddock/Interface/Create.hs | 10 | ||||
| -rw-r--r-- | html-test/ref/PR643.html | 80 | ||||
| -rw-r--r-- | html-test/src/PR643.hs | 3 | ||||
| -rw-r--r-- | html-test/src/PR643_1.hs | 7 | 
4 files changed, 99 insertions, 1 deletions
| diff --git a/haddock-api/src/Haddock/Interface/Create.hs b/haddock-api/src/Haddock/Interface/Create.hs index 0984894d..50643e2a 100644 --- a/haddock-api/src/Haddock/Interface/Create.hs +++ b/haddock-api/src/Haddock/Interface/Create.hs @@ -317,7 +317,12 @@ mkMaps :: DynFlags  mkMaps dflags gre instances decls =    let      (a, b, c, d) = unzip4 $ map mappings decls -  in (f' $ map (nubByName fst) a , f b, f c, f d, instanceMap) +  in ( f' (map (nubByName fst) a) +     , f  (filterMapping (not . M.null) b) +     , f  (filterMapping (not . null) c) +     , f  (filterMapping (not . null) d) +     , instanceMap +     )    where      f :: (Ord a, Monoid b) => [[(a, b)]] -> Map a b      f = M.fromListWith (<>) . concat @@ -325,6 +330,9 @@ mkMaps dflags gre instances decls =      f' :: [[(Name, MDoc Name)]] -> Map Name (MDoc Name)      f' = M.fromListWith metaDocAppend . concat +    filterMapping :: (b -> Bool) ->  [[(a, b)]] -> [[(a, b)]] +    filterMapping p = map (filter (p . snd)) +      mappings :: (LHsDecl Name, [HsDocString])               -> ( [(Name, MDoc Name)]                  , [(Name, Map Int (MDoc Name))] diff --git a/html-test/ref/PR643.html b/html-test/ref/PR643.html new file mode 100644 index 00000000..46e1e7ed --- /dev/null +++ b/html-test/ref/PR643.html @@ -0,0 +1,80 @@ +<html xmlns="http://www.w3.org/1999/xhtml" +><head +  ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" +     /><title +    >PR643</title +    ><link href="#" rel="stylesheet" type="text/css" title="Ocean" +     /><script src="haddock-util.js" type="text/javascript" +    ></script +    ><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript" +    ></script +    ><script type="text/javascript" +    >// +window.onload = function () {pageLoad();}; +// +</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</td +	    ></tr +	  ></table +	><p class="caption" +	>PR643</p +	></div +      ><div id="synopsis" +      ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')" +	>Synopsis</p +	><ul id="section.syn" class="hide" onclick="toggleSection('syn')" +	><li class="src short" +	  ><a href="#" +	    >test</a +	    > :: ()</li +	  ></ul +	></div +      ><div id="interface" +      ><h1 +	>Documentation</h1 +	><div class="top" +	><p class="src" +	  ><a id="v:test" class="def" +	    >test</a +	    > :: () <span class="fixity" +	    >infixr 5</span +	    ><span class="rightedge" +	    ></span +	    > <a href="#" class="selflink" +	    >#</a +	    ></p +	  ><div class="doc" +	  ><p +	    >Some big documentation</p +	    ></div +	  ></div +	></div +      ></div +    ><div id="footer" +    ></div +    ></body +  ></html +>
\ No newline at end of file diff --git a/html-test/src/PR643.hs b/html-test/src/PR643.hs new file mode 100644 index 00000000..565e5b57 --- /dev/null +++ b/html-test/src/PR643.hs @@ -0,0 +1,3 @@ +module PR643 (test) where + +import PR643_1 diff --git a/html-test/src/PR643_1.hs b/html-test/src/PR643_1.hs new file mode 100644 index 00000000..ecd0db94 --- /dev/null +++ b/html-test/src/PR643_1.hs @@ -0,0 +1,7 @@ +module PR643_1 where + +infixr 5 `test` + +-- | Some big documentation +test :: () +test = () | 
