aboutsummaryrefslogtreecommitdiff
path: root/haddock-api
Commit message (Collapse)AuthorAgeFilesLines
* Many LaTeX backend fixesAlec Theriault2019-03-091-98/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | After this commit, we can run with `--latex` on all boot libraries without crashing (although the generated LaTeX still fails to compile in a handful of larger packages like `ghc` and `base`). * Add newlines after all block elements in LaTeX. This is important to prevent the final output from being more an more indented. See the `latext-test/src/Example` test case for a sample of this. * Support associated types in class declarations (but not yet defaults) * Several small issues for producing compiling LaTeX; - avoid empy `\haddockbeginargs` lists (ex: `type family Any`) - properly escape identifiers depending on context (ex: `Int#`) - add `vbox` around `itemize`/`enumerate` (so they can be in tables) * Several spacing fixes: - limit the width of `Pretty`-arranged monospaced code - cut out extra space characters in export lists - only escape spaces if there are _multiple_ spaces - allow type signatures to be multiline (even without docs) * Remove uninteresting and repetitive `main.tex`/`haddock.sty` files from `latex-test` test reference output. Fixes #935, #929 (LaTeX docs for `text` build & compile) Fixes #727, #930 (I think both are really about type families...)
* Avoid multi-line `emph` in LaTeX backendAlec Theriault2019-03-091-1/+1
| | | | | | | | `markupWarning` often processes inputs which span across paragraphs. Unfortunately, LaTeX's `emph` is not made to handle this (and will crash). Fixes #936.
* Better support for default methods in classesAlec Theriault2019-03-094-51/+102
| | | | | | | | | | * default methods now get rendered differently * default associated types get rendered * fix a forgotten `s/TypeSig/ClassOpSig/` refactor in LaTeX backend * LaTeX backend now renders default method signatures NB: there is still no way to document default class members and the NB: LaTeX backend still crashes on associated types
* Merge branch 'ghc-8.6' into ghc-8.8Alec Theriault2019-03-0318-321/+734
|\
| * Increase contrast of Linuwal theme (#1037)gbaz2019-03-011-4/+6
| | | | | | | | | | | | | | | | | | | | This is to address the concern that, on less nice and older screens, some of the shades of grey blend in too easily with the white background. * darken the font slightly * darken slightly the grey behind type signatures and such * add a border and round the corners on code blocks * knock the font down by one point
| * `--show-interface` should output to stdout. (#1040)Alec Theriault2019-02-281-1/+2
| | | | | | Fixes #864.
| * Menu item controlling which instances are expanded/collapsed (#1007)Xia Li-yao2019-02-278-229/+635
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a menu item (like "Quick Jump") for options related to displaying instances. This provides functionality for: * expanding/collapsing all instances on the currently opened page * controlling whether instances are expanded/collapsed by default * controlling whether the state of instances should be "remembered" This new functionality is implemented in Typescript in `details-helper`. The built-in-themes style switcher also got a revamp so that all three of QuickJump, the style switcher, and instance preferences now have the same style and implementation structure. See also: https://mail.haskell.org/pipermail/haskell-cafe/2019-January/130495.html Fixes #698. Co-authored-by: Lysxia <lysxia@gmail.com> Co-authored-by: Nathan Collins <conathan@galois.com>
| * Fix standalone deriving docsAlec Theriault2019-02-251-2/+2
| | | | | | | | | | | | | | | | Docs on standalone deriving decls for classes with associated types should be associated with the class instance, not the associated type instance. Fixes #1033
| * Loosen 'QuickCheck' and 'hspec' boundsAlec Theriault2019-01-281-3/+3
| | | | | | | | | | It looks like the new versions don't cause any breakage and loosening the bounds helps deps fit in one stack resolver.
| * Fix #1004 with a pinch of dropForAllsRyan Scott2019-01-271-1/+1
| |
| * Keep forall on H98 existential data constructors (#1003)Alec Theriault2019-01-232-3/+3
| | | | | | | | | | | | | | The information about whether or not there is a source-level `forall` is already available on a `ConDecl` (as `con_forall`), so we should use it instead of always assuming `False`! Fixes #1002.
| * Print kinded tyvars in constructors for Hoogle (#993)Alec Theriault2019-01-071-2/+8
| | | | | | Fixes #992
| * Load plugins when compiling each module (#983)Alec Theriault2018-12-202-6/+9
| | | | | | | | | | | | | | | | | | | | * WIP: Load (typechecker) plugins from language pragmas * Revert "Load plugins when starting a GHC session (#905)" This reverts commit 72d82e52f2a6225686d9668790ac33c1d1743193. * Simplify plugin initialization code
| * More uniform handling of `forall`'s in HTML/LaTeXAlec Theriault2018-11-262-60/+50
| | | | | | | | | | | | | | * don't forget to print explicit `forall`'s when there are arg docs * when printing an explicit `forall`, print all tyvars Fixes #973
| * Add blockquote stylingAlec Theriault2018-11-121-0/+7
| | | | | | | | | | | | Matches b71da1feabf33efbbc517ac376bb690b5a604c2f from hackage-server. Fixes #967.
| * Rename 'NewOcean' theme to 'Linuwial'Alec Theriault2018-11-114-3/+3
| |
* | Fix bogus identifier defaultingAlec Theriault2019-02-261-9/+5
| | | | | | | | | | | | | | | | This avoids a situation in which an identifier would get defaulted to a completely different identifier. Prior to this commit, the 'Bug1035' test case would hyperlink 'Foo' into 'Bar'! Fixes #1035.
* | Better identifier parsingAlec Theriault2019-02-2511-66/+142
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * '(<|>)' and '`elem`' now get parsed and rendered properly as links * 'DbModule'/'DbUnitId' now properly get split apart into two links * tuple names now get parsed properly * some more small niceties... The identifier parsing code is more precise and more efficient (although to be fair: it is also longer and in its own module). On the rendering side, we need to pipe through information about backticks/parens/neither all the way through from renaming to the backends. In terms of impact: a total of 35 modules in the entirety of the bootlib + ghc lib docs change. The only "regression" is things like '\0'. These should be changed to @\\0@ (the path by which this previously worked seems accidental).
* | Support value/type namespaces on identifier linksAlec Theriault2019-02-255-22/+58
| | | | | | | | | | | | | | | | | | | | | | Identifier links can be prefixed with a 'v' or 't' to indicate the value or type namespace of the desired identifier. For example: -- | Some link to a value: v'Data.Functor.Identity' -- -- Some link to a type: t'Data.Functor.Identity' The default is still the type (with a warning about the ambiguity)
* | Fix #1015 with dataConUserTyVars (#1022)Ryan Scott2019-02-041-3/+4
| | | | | | | | | | | | | | The central trick in this patch is to use `dataConUserTyVars` instead of `univ_tvs ++ ex_tvs`, which displays the foralls in a GADT constructor in a way that's more faithful to how the user originally wrote it. Fixes #1015.
* | Miscellaneous improvements to `Convert` (#1020)Alec Theriault2019-02-035-152/+444
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that Haddock is moving towards working entirely over `.hi` and `.hie` files, all declarations and types are going to be synthesized via the `Convert` module. In preparation for this change, here are a bunch of fixes to this module: * Add kind annotations to type variables in `forall`'s whose kind is not `Type`, unless the kind can be inferred from some later use of the variable. See `implicitForAll` and `noKindTyVars` in particular if you wish to dive into this. * Properly detect `HsQualTy` in `synifyType`. This is done by following suit with what GHC's `toIfaceTypeX` does and checking the first argument of `FunTy{} :: Type` to see if it classified as a given/wanted in the typechecker (see `isPredTy`). * Beef up the logic around figuring out when an explicit `forall` is needed. This includes: observing if any of the type variables will need kind signatures, if the inferred type variable order _without_ a forall will still match the one GHC claims, and some other small things. * Add some (not yet used) functionality for default levity polymorphic type signatures. This functionality similar to `fprint-explicit-runtime-reps`. Couple other smaller fixes only worth mentioning: * Show the family result signature only when it isn't `Type` * Fix rendering of implicit parameters in the LaTeX and Hoogle backends * Better handling of the return kind of polykinded H98 data declarations * Class decls produced by `tyThingToLHsDecl` now contain associated type defaults and default method signatures when appropriate * Filter out more `forall`'s in pattern synonyms
* | Remove `Documentation.Haddock.Utf8`Alec Theriault2019-02-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The circumstances under which this module appeared are completely gone. The Hyperlinker backend no longer needs this module (it uses the more efficient `Encoding` module from `ghc`). Why no deprecation? Because this module really shouldn't exist! - It isn't used in `haddock-library`/`haddock-api` anymore - It was copy pasted directly from `utf8-string` - Folks seeking a boot-lib only solution can use `ghc`'s `Encoding`
* | Fix some Hyperlinker test suite falloutAlec Theriault2019-02-021-21/+44
| | | | | | | | | | | | | | | | | | | | | | * Amend `ParserSpec` to match new Hyperlinker API - pass in compiler info - strip out null tokens * Make `hypsrc-test` pass reliably - strip out `local-*` ids - strip out `line-*` ids from the `ClangCppBug` test - re-accept output
* | Use `.hie` files for the Hyperlinker backend (#977)Alec Theriault2019-01-3114-665/+771
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # Summary This is a large architectural change to the Hyperlinker. * extract link (and now also type) information from `.hie` instead of doing ad-hoc SYB traversals of the `RenamedSource`. Also adds a superb type-on-hover feature (#715). * re-engineer the lexer to avoid needless string conversions. By going directly through GHC's `P` monad and taking bytestring slices, we avoid a ton of allocation and have better handling of position pragmas and CPP. In terms of performance, the Haddock side of things has gotten _much_ more efficient. Unfortunately, much of this is cancelled out by the increased GHC workload for generating `.hie` files. For the full set of boot libs (including `ghc`-the-library) * the sum of total time went down by 9-10% overall * the sum of total allocations went down by 6-7% # Motivation Haddock is moving towards working entirely over `.hi` and `.hie` files. This change means we no longer need the `RenamedSource` from `TypecheckedModule` (something which is _not_ in `.hi` files). # Details Along the way a bunch of things were fixed: * Cross package (and other) links are now more reliable (#496) * The lexer tries to recover from errors on every line (instead of at CPP boundaries) * `LINE`/`COLUMN` pragmas are taken into account * filter out zero length tokens before rendering * avoid recomputing the `ModuleName`-based `SrcMap` * remove the last use of `Documentation.Haddock.Utf8` (see #998) * restructure temporary folder logic for `.hi`/`.hie` model
* | Visible kind application haddock updatemynguyen2018-12-3010-24/+76
| |
* | Properly synify and render promoted type variables (#985)Alec Theriault2018-12-232-4/+6
| | | | | | | | | | | | | | | | * Synify and render properly promoted type variables Fixes #923. * Accept output
* | Refactor names + unused functions (#982)Alec Theriault2018-12-177-62/+26
| | | | | | | | | | | | | | This commit should not introduce any change in functionality! * consistently use `getOccString` to convert `Name`s to strings * compare names directly when possible (instead of comparing strings) * get rid of unused utility functions
* | Output better debug infromation on internal error in extractDeclZejun Wu2018-12-141-1/+3
| | | | | | | | This will make investigation of #979 easier
* | Fix warnings, accept outputAlec Theriault2018-12-126-8/+1
| | | | | | | | | | | | | | * remove redundant imports (only brought to light due to recent work for improving redundant import detection) * fix a bug that was casuing exports to appear in reverse order * fix something in haddock-library that prevented compilation on old GHC's
* | [TTG: Handling Source Locations] Foundation and PatShayan-Najd2018-11-237-36/+75
| | | | | | | | | | | | | | | | | | | | | | Trac Issues #15495 This patch removes the ping-pong style from HsPat (only, for now), using the plan laid out at https://ghc.haskell.org/trac/ghc/wiki/ImplementingTreesThatGrow/HandlingSourceLocations (solution A). - the class `HasSrcSpan`, and its functions (e.g., `cL` and `dL`), are introduced - some instances of `HasSrcSpan` are introduced - some constructors `L` are replaced with `cL` - some patterns `L` are replaced with `dL->L` view pattern - some type annotation are necessarily updated (e.g., `Pat p` --> `Pat (GhcPass p)`)
* | Follow GHC HEAD's HsTypes.Promoted -> BasicTypes.PromotionFlag changeAlp Mestanogullari2018-11-157-10/+15
| | | | | | | | It got introduced in ghc/ghc@ae2c9b40f5b6bf272251d1f4107c60003f541b62.
* | Merge branch 'ghc-8.6' into ghc-headAlec Theriault2018-11-1026-1952/+4535
|\|
| * Replace oplus/ominus expander/collapser icons with trianglesAlec Theriault2018-11-101-3/+3
| |
| * Merge branch 'ghc-8.6' into wip/new-oceanAlec Theriault2018-11-096-30/+45
| |\
| | * Only run MathJax on entities with "mathjax" class (#960)Alec Theriault2018-11-052-11/+17
| | | | | | | | | | | | | | | | | | | | | Correspondingly, we wrap all inline/diplay math in <span class="mathjax"> ... the math .... </span> This fixes #959.
| | * Fix documentation in `haddock-api` (#957)Alec Theriault2018-10-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix misplaced Haddocks in Haddock itself Haddock should be able to generate documentation for 'haddock-api' again. * Make CI check that documentation can be built. * Add back a doc that is OK
| | * Avoid some partialityAlec Theriault2018-10-263-13/+21
| | | | | | | | | | | | | | | | | | | | | | | | AFAICT this wasn't causing any crashes, but that's mostly because we happen not to be forcing `pkgStr` when it would diverge. We come dangerously close to doing that in `ppHtmlIndex`. Fixes #569.
| * | Space out functions moreAlec Theriault2018-11-081-6/+2
| | | | | | | | | | | | | | | Also, functions and data decls now have the same space before and after them.
| * | Clicking on "Contents" navigates to top of pageAlec Theriault2018-11-081-1/+1
| | |
| * | overflow-y 'scroll' -> 'auto'Alec Theriault2018-11-071-2/+2
| | |
| * | Allow "Contents" summary to scroll in a fixed divAlec Theriault2018-11-073-14/+13
| | | | | | | | | | | | | | | In the unfortunate event that the "Contents" summary doesn't fit vertically (like in the "Prelude"), it will be scrollable.
| * | Fix issues around plus/minusAlec Theriault2018-11-076-14/+11
| | | | | | | | | | | | | | | | | | * swap the minimize unicode to something more intuitive * use new unicode expander/collapser for instance lists * address some alignment issues in the "index" page
| * | Revert "Make 'Contents' in NewOcean scrollable"Alec Theriault2018-10-261-2/+0
| | | | | | | | | | | | | | | | | | | | | This reverts commit f909ffd8353d6463fd5dd184998a32aa98d5c922. I missed the fact this also forces the 'Contents' to always go down to the bottom of the page.
| * | Make 'Contents' in NewOcean scrollableAlec Theriault2018-10-261-0/+2
| | | | | | | | | | | | | | | | | | This only happens if the contents block on the left is so big that it doesn't fit (vertically) on the page. If that happens, we want it to be scrollable.
| * | Merge branch 'ghc-8.6' into wip/new-oceanAlec Theriault2018-10-252-8/+11
| |\|
| | * Avoid more conflicts in generated ids (#954)Alec Theriault2018-10-251-6/+10
| | | | | | | | | | | | | | | This fixes #953 by passing more names into the generated ids.
| | * Fix typo in a warningSimon Jakobi2018-10-231-2/+1
| | |
| * | Indent more things + slightly smaller fontAlec Theriault2018-10-251-2/+2
| | |
| * | Don't hide bullets in method docsAlec Theriault2018-10-252-4/+4
| | | | | | | | | | | | | | | | | | | | | I think thst CSS was meant only to deal with fields and the effect on bullets was accidental. Fixes #926.
| * | Fix the synopsis buttonAlec Theriault2018-10-241-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here's these changes are supposed to do: * put the synopsis back on the right side * properly have it on the edge of the screen on wide screens * adjust the background of the synopsis to match the button (otherwise the grey blends in with what is underneath) * get rid of the dotted purple line * the synopsis contents are now scrollable even when in wide screens (this has been a long-standing bug)