From 1b26460fb3b5df5215cc1e6715661cbc7c950085 Mon Sep 17 00:00:00 2001
From: Alec Theriault <alec.theriault@gmail.com>
Date: Thu, 31 Jan 2019 01:37:25 -0800
Subject: 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
---
 hypsrc-test/ref/src/Types.html | 1022 ++++++++++++++++++++++++----------------
 1 file changed, 624 insertions(+), 398 deletions(-)

(limited to 'hypsrc-test/ref/src/Types.html')

diff --git a/hypsrc-test/ref/src/Types.html b/hypsrc-test/ref/src/Types.html
index a8be9e78..1258b8c1 100644
--- a/hypsrc-test/ref/src/Types.html
+++ b/hypsrc-test/ref/src/Types.html
@@ -11,18 +11,18 @@
       ><span
       >
 </span
-      ><a name="line-2"
-      ></a
+      ><span id="line-2"
+      ></span
       ><span
       >
 </span
-      ><a name="line-3"
-      ></a
+      ><span id="line-3"
+      ></span
       ><span
       >
 </span
-      ><a name="line-4"
-      ></a
+      ><span id="line-4"
+      ></span
       ><span class="hs-keyword"
       >module</span
       ><span
@@ -36,84 +36,94 @@
       ><span
       >
 </span
-      ><a name="line-5"
-      ></a
+      ><span id="line-5"
+      ></span
       ><span
       >
 </span
-      ><a name="line-6"
-      ></a
+      ><span id="line-6"
+      ></span
       ><span
       >
 </span
-      ><a name="line-7"
-      ></a
+      ><span id="line-7"
+      ></span
       ><span class="hs-keyword"
       >data</span
       ><span
       > </span
-      ><a name="Quux"
-      ><a href="Types.html#Quux"
-	><span class="hs-identifier"
-	  >Quux</span
-	  ></a
-	></a
+      ><span id="Quux"
+      ><span class="annot"
+	><a href="Types.html#Quux"
+	  ><span class="hs-identifier hs-var"
+	    >Quux</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >=</span
       ><span
       > </span
-      ><a name="Bar"
-      ><a href="Types.html#Bar"
-	><span class="hs-identifier"
-	  >Bar</span
-	  ></a
-	></a
+      ><span id="Bar"
+      ><span class="annot"
+	><a href="Types.html#Bar"
+	  ><span class="hs-identifier hs-var"
+	    >Bar</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >|</span
       ><span
       > </span
-      ><a name="Baz"
-      ><a href="Types.html#Baz"
-	><span class="hs-identifier"
-	  >Baz</span
-	  ></a
-	></a
+      ><span id="Baz"
+      ><span class="annot"
+	><a href="Types.html#Baz"
+	  ><span class="hs-identifier hs-var"
+	    >Baz</span
+	    ></a
+	  ></span
+	></span
       ><span
       >
 </span
-      ><a name="line-8"
-      ></a
+      ><span id="line-8"
+      ></span
       ><span
       >
 </span
-      ><a name="line-9"
-      ></a
+      ><span id="line-9"
+      ></span
       ><span class="hs-keyword"
       >newtype</span
       ><span
       > </span
-      ><a name="Foo"
-      ><a href="Types.html#Foo"
-	><span class="hs-identifier"
-	  >Foo</span
-	  ></a
-	></a
+      ><span id="Foo"
+      ><span class="annot"
+	><a href="Types.html#Foo"
+	  ><span class="hs-identifier hs-var"
+	    >Foo</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >=</span
       ><span
       > </span
-      ><a name="Foo"
-      ><a href="Types.html#Foo"
-	><span class="hs-identifier"
-	  >Foo</span
-	  ></a
-	></a
+      ><span id="Foo"
+      ><span class="annot"
+	><a href="Types.html#Foo"
+	  ><span class="hs-identifier hs-var"
+	    >Foo</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -123,23 +133,25 @@
       ><span
       >
 </span
-      ><a name="line-10"
-      ></a
+      ><span id="line-10"
+      ></span
       ><span
       >
 </span
-      ><a name="line-11"
-      ></a
+      ><span id="line-11"
+      ></span
       ><span class="hs-keyword"
       >type</span
       ><span
       > </span
-      ><a name="FooQuux"
-      ><a href="Types.html#FooQuux"
-	><span class="hs-identifier"
-	  >FooQuux</span
-	  ></a
-	></a
+      ><span id="FooQuux"
+      ><span class="annot"
+	><a href="Types.html#FooQuux"
+	  ><span class="hs-identifier hs-var"
+	    >FooQuux</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
@@ -148,35 +160,41 @@
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span class="hs-special"
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
       >
 </span
-      ><a name="line-12"
-      ></a
+      ><span id="line-12"
+      ></span
       ><span class="hs-keyword"
       >type</span
       ><span
       > </span
-      ><a name="QuuxFoo"
-      ><a href="Types.html#QuuxFoo"
-	><span class="hs-identifier"
-	  >QuuxFoo</span
-	  ></a
-	></a
+      ><span id="QuuxFoo"
+      ><span class="annot"
+	><a href="Types.html#QuuxFoo"
+	  ><span class="hs-identifier hs-var"
+	    >QuuxFoo</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
@@ -185,35 +203,39 @@
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span class="hs-special"
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
       >
 </span
-      ><a name="line-13"
-      ></a
+      ><span id="line-13"
+      ></span
       ><span
       >
 </span
-      ><a name="line-14"
-      ></a
+      ><span id="line-14"
+      ></span
       ><span
       >
 </span
-      ><a name="line-15"
-      ></a
+      ><span id="line-15"
+      ></span
       ><span class="hs-keyword"
       >data</span
       ><span
@@ -222,38 +244,44 @@
       >family</span
       ><span
       > </span
-      ><a name="Norf"
-      ><a href="Types.html#Norf"
-	><span class="hs-identifier"
-	  >Norf</span
-	  ></a
-	></a
+      ><span id="Norf"
+      ><span class="annot"
+	><a href="Types.html#Norf"
+	  ><span class="hs-identifier hs-var"
+	    >Norf</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
-      ><a name=""
-      ><a href="#"
-	><span class="hs-identifier"
-	  >a</span
-	  ></a
-	></a
+      ><span id="local-6989586621679043815"
+      ><span class="annot"
+	><a href="#"
+	  ><span class="hs-identifier hs-type"
+	    >a</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
-      ><a name=""
-      ><a href="#"
-	><span class="hs-identifier"
-	  >b</span
-	  ></a
-	></a
+      ><span id="local-6989586621679043814"
+      ><span class="annot"
+	><a href="#"
+	  ><span class="hs-identifier hs-type"
+	    >b</span
+	    ></a
+	  ></span
+	></span
       ><span
       >
 </span
-      ><a name="line-16"
-      ></a
+      ><span id="line-16"
+      ></span
       ><span
       >
 </span
-      ><a name="line-17"
-      ></a
+      ><span id="line-17"
+      ></span
       ><span class="hs-keyword"
       >data</span
       ><span
@@ -262,51 +290,65 @@
       >instance</span
       ><span
       > </span
-      ><a href="Types.html#Norf"
-      ><span class="hs-identifier hs-type"
-	>Norf</span
-	></a
+      ><span id="Norf"
+      ><span class="annot"
+	><a href="Types.html#Norf"
+	  ><span class="hs-identifier hs-var"
+	    >Norf</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >=</span
       ><span
       > </span
-      ><a name="NFQ"
-      ><a href="Types.html#NFQ"
-	><span class="hs-identifier"
-	  >NFQ</span
-	  ></a
-	></a
+      ><span id="NFQ"
+      ><span class="annot"
+	><a href="Types.html#NFQ"
+	  ><span class="hs-identifier hs-var"
+	    >NFQ</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       >
 </span
-      ><a name="line-18"
-      ></a
+      ><span id="line-18"
+      ></span
       ><span class="hs-keyword"
       >data</span
       ><span
@@ -315,61 +357,75 @@
       >instance</span
       ><span
       > </span
-      ><a href="Types.html#Norf"
-      ><span class="hs-identifier hs-type"
-	>Norf</span
-	></a
+      ><span id="Norf"
+      ><span class="annot"
+	><a href="Types.html#Norf"
+	  ><span class="hs-identifier hs-var"
+	    >Norf</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >=</span
       ><span
       > </span
-      ><a name="NQF"
-      ><a href="Types.html#NQF"
-	><span class="hs-identifier"
-	  >NQF</span
-	  ></a
-	></a
+      ><span id="NQF"
+      ><span class="annot"
+	><a href="Types.html#NQF"
+	  ><span class="hs-identifier hs-var"
+	    >NQF</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       >
 </span
-      ><a name="line-19"
-      ></a
+      ><span id="line-19"
+      ></span
       ><span
       >
 </span
-      ><a name="line-20"
-      ></a
+      ><span id="line-20"
+      ></span
       ><span
       >
 </span
-      ><a name="line-21"
-      ></a
+      ><span id="line-21"
+      ></span
       ><span class="hs-keyword"
       >type</span
       ><span
@@ -378,38 +434,44 @@
       >family</span
       ><span
       > </span
-      ><a name="Norf%27"
-      ><a href="Types.html#Norf%27"
-	><span class="hs-identifier"
-	  >Norf'</span
-	  ></a
-	></a
+      ><span id="Norf%27"
+      ><span class="annot"
+	><a href="Types.html#Norf%27"
+	  ><span class="hs-identifier hs-var"
+	    >Norf'</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
-      ><a name=""
-      ><a href="#"
-	><span class="hs-identifier"
-	  >a</span
-	  ></a
-	></a
+      ><span id="local-6989586621679043811"
+      ><span class="annot"
+	><a href="#"
+	  ><span class="hs-identifier hs-type"
+	    >a</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
-      ><a name=""
-      ><a href="#"
-	><span class="hs-identifier"
-	  >b</span
-	  ></a
-	></a
+      ><span id="local-6989586621679043810"
+      ><span class="annot"
+	><a href="#"
+	  ><span class="hs-identifier hs-type"
+	    >b</span
+	    ></a
+	  ></span
+	></span
       ><span
       >
 </span
-      ><a name="line-22"
-      ></a
+      ><span id="line-22"
+      ></span
       ><span
       >
 </span
-      ><a name="line-23"
-      ></a
+      ><span id="line-23"
+      ></span
       ><span class="hs-keyword"
       >type</span
       ><span
@@ -418,22 +480,30 @@
       >instance</span
       ><span
       > </span
-      ><a href="Types.html#Norf%27"
-      ><span class="hs-identifier hs-type"
-	>Norf'</span
-	></a
+      ><span id="Norf%27"
+      ><span class="annot"
+	><a href="Types.html#Norf%27"
+	  ><span class="hs-identifier hs-var"
+	    >Norf'</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
@@ -442,25 +512,29 @@
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span class="hs-special"
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
       >
 </span
-      ><a name="line-24"
-      ></a
+      ><span id="line-24"
+      ></span
       ><span class="hs-keyword"
       >type</span
       ><span
@@ -469,22 +543,30 @@
       >instance</span
       ><span
       > </span
-      ><a href="Types.html#Norf%27"
-      ><span class="hs-identifier hs-type"
-	>Norf'</span
-	></a
+      ><span id="Norf%27"
+      ><span class="annot"
+	><a href="Types.html#Norf%27"
+	  ><span class="hs-identifier hs-var"
+	    >Norf'</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
@@ -493,94 +575,119 @@
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span class="hs-special"
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
       >
 </span
-      ><a name="line-25"
-      ></a
+      ><span id="line-25"
+      ></span
       ><span
       >
 </span
-      ><a name="line-26"
-      ></a
+      ><span id="line-26"
+      ></span
       ><span
       >
 </span
-      ><a name="line-27"
-      ></a
-      ><span class="hs-identifier"
-      >norf1</span
+      ><span id="line-27"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf1"
+	><span class="hs-identifier hs-type"
+	  >norf1</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >::</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Norf"
-      ><span class="hs-identifier hs-type"
-	>Norf</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Norf</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >-&gt;</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-identifier hs-type"
-      >Int</span
+	>Int</span
+	></span
       ><span
       >
 </span
-      ><a name="line-28"
-      ></a
-      ><a name="norf1"
-      ><a href="Types.html#norf1"
-	><span class="hs-identifier"
-	  >norf1</span
-	  ></a
-	></a
+      ><span id="line-28"
+      ></span
+      ><span id="norf1"
+      ><span class="annot"
+	><span class="annottext"
+	  >norf1 :: Norf Foo Quux -&gt; Int
+</span
+	  ><a href="Types.html#norf1"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >norf1</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#NFQ"
-      ><span class="hs-identifier hs-var"
-	>NFQ</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >NFQ</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -591,10 +698,12 @@
       >)</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Bar"
-      ><span class="hs-identifier hs-var"
-	>Bar</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Bar</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
@@ -603,31 +712,41 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >0</span
+	>0</span
+	></span
       ><span
       >
 </span
-      ><a name="line-29"
-      ></a
-      ><span class="hs-identifier"
-      >norf1</span
+      ><span id="line-29"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf1"
+	><span class="hs-identifier hs-var"
+	  >norf1</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#NFQ"
-      ><span class="hs-identifier hs-var"
-	>NFQ</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >NFQ</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -638,10 +757,12 @@
       >)</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Baz"
-      ><span class="hs-identifier hs-var"
-	>Baz</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Baz</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
@@ -650,83 +771,108 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >1</span
+	>1</span
+	></span
       ><span
       >
 </span
-      ><a name="line-30"
-      ></a
+      ><span id="line-30"
+      ></span
       ><span
       >
 </span
-      ><a name="line-31"
-      ></a
-      ><span class="hs-identifier"
-      >norf2</span
+      ><span id="line-31"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf2"
+	><span class="hs-identifier hs-type"
+	  >norf2</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >::</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Norf"
-      ><span class="hs-identifier hs-type"
-	>Norf</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Norf</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >-&gt;</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-identifier hs-type"
-      >Int</span
+	>Int</span
+	></span
       ><span
       >
 </span
-      ><a name="line-32"
-      ></a
-      ><a name="norf2"
-      ><a href="Types.html#norf2"
-	><span class="hs-identifier"
-	  >norf2</span
-	  ></a
-	></a
+      ><span id="line-32"
+      ></span
+      ><span id="norf2"
+      ><span class="annot"
+	><span class="annottext"
+	  >norf2 :: Norf Quux Foo -&gt; Int
+</span
+	  ><a href="Types.html#norf2"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >norf2</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#NQF"
-      ><span class="hs-identifier hs-var"
-	>NQF</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >NQF</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Bar"
-      ><span class="hs-identifier hs-var"
-	>Bar</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Bar</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -743,37 +889,49 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >0</span
+	>0</span
+	></span
       ><span
       >
 </span
-      ><a name="line-33"
-      ></a
-      ><span class="hs-identifier"
-      >norf2</span
+      ><span id="line-33"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf2"
+	><span class="hs-identifier hs-var"
+	  >norf2</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#NQF"
-      ><span class="hs-identifier hs-var"
-	>NQF</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >NQF</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Baz"
-      ><span class="hs-identifier hs-var"
-	>Baz</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Baz</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -790,74 +948,95 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >1</span
+	>1</span
+	></span
       ><span
       >
 </span
-      ><a name="line-34"
-      ></a
+      ><span id="line-34"
+      ></span
       ><span
       >
 </span
-      ><a name="line-35"
-      ></a
+      ><span id="line-35"
+      ></span
       ><span
       >
 </span
-      ><a name="line-36"
-      ></a
-      ><span class="hs-identifier"
-      >norf1'</span
+      ><span id="line-36"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf1%27"
+	><span class="hs-identifier hs-type"
+	  >norf1'</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >::</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Norf%27"
-      ><span class="hs-identifier hs-type"
-	>Norf'</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Norf'</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >-&gt;</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-identifier hs-type"
-      >Int</span
+	>Int</span
+	></span
       ><span
       >
 </span
-      ><a name="line-37"
-      ></a
-      ><a name="norf1%27"
-      ><a href="Types.html#norf1%27"
-	><span class="hs-identifier"
-	  >norf1'</span
-	  ></a
-	></a
+      ><span id="line-37"
+      ></span
+      ><span id="norf1%27"
+      ><span class="annot"
+	><span class="annottext"
+	  >norf1' :: Norf' Foo Quux -&gt; Int
+</span
+	  ><a href="Types.html#norf1%27"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >norf1'</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -868,10 +1047,12 @@
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Bar"
-      ><span class="hs-identifier hs-var"
-	>Bar</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Bar</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
@@ -880,23 +1061,31 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >0</span
+	>0</span
+	></span
       ><span
       >
 </span
-      ><a name="line-38"
-      ></a
-      ><span class="hs-identifier"
-      >norf1'</span
+      ><span id="line-38"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf1%27"
+	><span class="hs-identifier hs-var"
+	  >norf1'</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -907,10 +1096,12 @@
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Baz"
-      ><span class="hs-identifier hs-var"
-	>Baz</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Baz</span
+	  ></a
+	></span
       ><span class="hs-special"
       >)</span
       ><span
@@ -919,77 +1110,100 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >1</span
+	>1</span
+	></span
       ><span
       >
 </span
-      ><a name="line-39"
-      ></a
+      ><span id="line-39"
+      ></span
       ><span
       >
 </span
-      ><a name="line-40"
-      ></a
-      ><span class="hs-identifier"
-      >norf2'</span
+      ><span id="line-40"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf2%27"
+	><span class="hs-identifier hs-type"
+	  >norf2'</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >::</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Norf%27"
-      ><span class="hs-identifier hs-type"
-	>Norf'</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Norf'</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Quux"
-      ><span class="hs-identifier hs-type"
-	>Quux</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Quux</span
+	  ></a
+	></span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-type"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-glyph"
       >-&gt;</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-identifier hs-type"
-      >Int</span
+	>Int</span
+	></span
       ><span
       >
 </span
-      ><a name="line-41"
-      ></a
-      ><a name="norf2%27"
-      ><a href="Types.html#norf2%27"
-	><span class="hs-identifier"
-	  >norf2'</span
-	  ></a
-	></a
+      ><span id="line-41"
+      ></span
+      ><span id="norf2%27"
+      ><span class="annot"
+	><span class="annottext"
+	  >norf2' :: Norf' Quux Foo -&gt; Int
+</span
+	  ><a href="Types.html#norf2%27"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >norf2'</span
+	    ></a
+	  ></span
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Bar"
-      ><span class="hs-identifier hs-var"
-	>Bar</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Bar</span
+	  ></a
+	></span
       ><span class="hs-special"
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -1004,31 +1218,41 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >0</span
+	>0</span
+	></span
       ><span
       >
 </span
-      ><a name="line-42"
-      ></a
-      ><span class="hs-identifier"
-      >norf2'</span
+      ><span id="line-42"
+      ></span
+      ><span class="annot"
+      ><a href="Types.html#norf2%27"
+	><span class="hs-identifier hs-var"
+	  >norf2'</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
       >(</span
+      ><span class="annot"
       ><a href="Types.html#Baz"
-      ><span class="hs-identifier hs-var"
-	>Baz</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Baz</span
+	  ></a
+	></span
       ><span class="hs-special"
       >,</span
       ><span
       > </span
+      ><span class="annot"
       ><a href="Types.html#Foo"
-      ><span class="hs-identifier hs-var"
-	>Foo</span
-	></a
+	><span class="hs-identifier hs-type"
+	  >Foo</span
+	  ></a
+	></span
       ><span
       > </span
       ><span class="hs-special"
@@ -1043,13 +1267,15 @@
       >=</span
       ><span
       > </span
+      ><span class="annot"
       ><span class="hs-number"
-      >1</span
+	>1</span
+	></span
       ><span
       >
 </span
-      ><a name="line-43"
-      ></a
+      ><span id="line-43"
+      ></span
       ></pre
     ></body
   ></html
-- 
cgit v1.2.3