From aa9644fc4179de044557438f2bd3003642750a97 Mon Sep 17 00:00:00 2001
From: Alec Theriault <alec.theriault@gmail.com>
Date: Sun, 3 Feb 2019 22:58:58 -0800
Subject: Miscellaneous improvements to `Convert` (#1020)

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
---
 html-test/ref/Operators.html | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

(limited to 'html-test/ref/Operators.html')

diff --git a/html-test/ref/Operators.html b/html-test/ref/Operators.html
index 8c7746af..d0c42a08 100644
--- a/html-test/ref/Operators.html
+++ b/html-test/ref/Operators.html
@@ -96,9 +96,7 @@
 	      >pattern</span
 	      > <a href="#"
 	      >(:+)</a
-	      > :: <span class="keyword"
-	      >forall</span
-	      > a. a -&gt; a -&gt; [a]</li
+	      > :: a -&gt; a -&gt; [a]</li
 	    ><li class="src short"
 	    ><span class="keyword"
 	      >data</span
@@ -285,9 +283,7 @@
 	    >pattern</span
 	    > <a id="v::-43-" class="def"
 	    >(:+)</a
-	    > :: <span class="keyword"
-	    >forall</span
-	    > a. a -&gt; a -&gt; [a] <span class="fixity"
+	    > :: a -&gt; a -&gt; [a] <span class="fixity"
 	    >infixr 3</span
 	    ><span class="rightedge"
 	    ></span
@@ -529,4 +525,4 @@
     ></div
     ></body
   ></html
->
+>
\ No newline at end of file
-- 
cgit v1.2.3