Use `.hie` files for the Hyperlinker backend (#977)
# 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
Showing
- CHANGES.md 6 additions, 0 deletionsCHANGES.md
- haddock-api/haddock-api.cabal 2 additions, 2 deletionshaddock-api/haddock-api.cabal
- haddock-api/resources/html/solarized.css 42 additions, 0 deletionshaddock-api/resources/html/solarized.css
- haddock-api/src/Haddock.hs 39 additions, 13 deletionshaddock-api/src/Haddock.hs
- haddock-api/src/Haddock/Backends/Hyperlinker.hs 44 additions, 11 deletionshaddock-api/src/Haddock/Backends/Hyperlinker.hs
- haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs 0 additions, 237 deletionshaddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs
- haddock-api/src/Haddock/Backends/Hyperlinker/Parser.hs 190 additions, 196 deletionshaddock-api/src/Haddock/Backends/Hyperlinker/Parser.hs
- haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs 201 additions, 75 deletionshaddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
- haddock-api/src/Haddock/Backends/Hyperlinker/Types.hs 10 additions, 26 deletionshaddock-api/src/Haddock/Backends/Hyperlinker/Types.hs
- haddock-api/src/Haddock/Backends/Hyperlinker/Utils.hs 87 additions, 11 deletionshaddock-api/src/Haddock/Backends/Hyperlinker/Utils.hs
- haddock-api/src/Haddock/GhcUtils.hs 131 additions, 3 deletionshaddock-api/src/Haddock/GhcUtils.hs
- haddock-api/src/Haddock/Interface.hs 10 additions, 45 deletionshaddock-api/src/Haddock/Interface.hs
- haddock-api/src/Haddock/Interface/Create.hs 2 additions, 37 deletionshaddock-api/src/Haddock/Interface/Create.hs
- haddock-api/src/Haddock/Types.hs 6 additions, 8 deletionshaddock-api/src/Haddock/Types.hs
- haddock-api/src/Haddock/Utils.hs 7 additions, 1 deletionhaddock-api/src/Haddock/Utils.hs
- haddock.cabal 1 addition, 1 deletionhaddock.cabal
- hypsrc-test/ref/src/CPP.html 104 additions, 93 deletionshypsrc-test/ref/src/CPP.html
- hypsrc-test/ref/src/ClangCppBug.html 306 additions, 0 deletionshypsrc-test/ref/src/ClangCppBug.html
- hypsrc-test/ref/src/Classes.html 1021 additions, 631 deletionshypsrc-test/ref/src/Classes.html
- hypsrc-test/ref/src/Constructors.html 835 additions, 433 deletionshypsrc-test/ref/src/Constructors.html
hypsrc-test/ref/src/ClangCppBug.html
0 → 100644
Please register or sign in to comment