| Commit message (Collapse) | Author | Age | Files | Lines | 
| ...    |  | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
* enable more useful warning flags in `haddock-api`, handle the new
    warnings generated
  * remove `-fwarn-tabs` (now we'd use `-Wtabs`, but this has been in
    `-Wall` for a while now)
 | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
* `unL` is already defined by GHC as `unLoc`
 * `reL` is already defined by GHC as `noLoc` (in a safer way too!)
 * Condense `setOutputDir` and add a about exporting from GHC
Fixes #978
 | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
None of these error cases should ever have been reachable, so this is
just a matter of leveraging the type system to assert this.
  * Use the `NoExtCon` and `noExtCon` to handle case matches for no
    extension constructors, instead of throwing an `error`.
  * Use the extension field of `HsSpliceTy` to ensure that this variant
    of `HsType` cannot exist in an `HsType DocNameI`.
 | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
* unused imports
  * imports of `Data.List` without import lists
  * missing `CompatPrelude` file in `.cabal`
 | 
| | |\ \   | 
 | 
| | | | | 
| | | | 
| | | |  | 
The `ignore-exports` option has been broken since #688, as mentioned in https://github.com/haskell/haddock/pull/766#issue-172505043. This PR fixes it.
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | | 
| | | | 
| | | | 
| | | |  | 
(cherry picked from commit 3ee6526d4ae7bf4deb7cd1caf24b3d7355573576)
 | 
| | | |\ \   | 
 | 
| | | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | |  | 
Docs on standalone deriving decls for classes with associated types
should be associated with the class instance, not the associated type
instance.
Fixes #1033
 | 
| | | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | |  | 
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.
 | 
| | | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | |  | 
* '(<|>)' 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).
 | 
| | | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | | 
| | | | |  | 
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)
 | 
| | |_|_|/  
|/| | |   
| | | |   
| | | |    | 
(cherry picked from commit a7d1d8e034d25612d5d08ed8fdbf6f472aded4a1)
 | 
| | | | |  | 
 | 
| | | | | 
| | | | 
| | | | 
| | | |  | 
See ghc/ghc!852.
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | | 
| | | | 
| | | | 
| | | | 
| | | |  | 
These changes are a part of a fix for
[GHC#17992](https://gitlab.haskell.org/ghc/ghc/issues/17992).
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| |\ \ \ \  
| | | | | 
| | | | | 
| | | | |  | 
More changes from the GHC types module refactoring.
 | 
| | | | | |  | 
 | 
| |/ / / /   | 
 | 
| |\ \ \ \  
| | | | | 
| | | | |  | 
Modules: Core (#13009)
 | 
| | | | | |  | 
 | 
| |/ / / /   | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | |  | 
 | 
| | | | | 
| | | | 
| | | | 
| | | |  | 
See https://gitlab.haskell.org/ghc/ghc/merge_requests/2372
 | 
| | | | |  | 
 | 
| |/ / /   | 
 | 
| | | |  | 
 | 
| | | |  | 
 | 
| | | |  | 
 | 
| | | |  | 
 | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
`FunTy` now has an `AnonArgFlag` that indicates whether the arrow is
a `t1 => t2` or `t1 -> t2`.
This commit shouldn't change any functionality in Haddock.
 | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
Changes in 19626218566ea709b5f6f287d3c296b0c4021de2 affected some
of the hyperlinker output. Accepted the new output (hovering over a
`..` now shows you what that wildcard binds).
Also fixed some stray deprecation warnings.
 | 
| |/ /   | 
 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| |  | 
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
 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| |  | 
# 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
 | 
| | |  | 
 |