Desugar quoted uses of DerivingVia and expression type signatures properly
The way that GHC.HsToCore.Quote
desugared quoted via
types (e.g.,
deriving via forall a. [a] instance Eq a => Eq (List a)
) and
explicit type annotations in signatures (e.g.,
f = id @a :: forall a. a -> a
) was completely wrong, as it did not
implement the scoping guidelines laid out in
Note [Scoped type variables in bindings]
. This is easily fixed.
While I was in town, I did some minor cleanup of related Notes:
-
Note [Scoped type variables in bindings]
andNote [Scoped type variables in class and instance declarations]
say very nearly the same thing. I decided to just consolidate the two Notes intoNote [Scoped type variables in quotes]
. -
Note [Don't quantify implicit type variables in quotes]
is somewhat outdated, as it predates GHC 8.10, where theforall
-or-nothing rule requires kind variables to be explicitly quantified in the presence of an explicitforall
. As a result, the running example in that Note doesn't even compile. I have changed the example to something simpler that illustrates the same point that the original Note was making.
Fixes #18388 (closed).