Describe symptoms of (and the cure for) #12768 in 8.0.2 release notes
authorRyan Scott <ryan.gl.scott@gmail.com>
Sun, 6 Nov 2016 14:40:48 +0000 (09:40 -0500)
committerRyan Scott <ryan.gl.scott@gmail.com>
Sun, 6 Nov 2016 14:40:48 +0000 (09:40 -0500)
GHC 8.0.2 introduced a bugfix involving GeneralizedNewtypeDeriving in
96d451450923a80b043b5314c5eaaa9d0eab7c56. This made typechecking of
GND-produced code a bit stricter, and an unfortunate side effect of this was
that there were a couple of corner-case programs that stopped compiling
when transitioning from GHC 8.0.1 to 8.0.2.

Since the number of affected programs seems quite small, and since the fix
is so straightforward, we opt to simply note this discrepancy in the 8.0.2
release notes.

Resolves #12768.

docs/users_guide/8.0.2-notes.rst

index c8e76ed..43ee70f 100644 (file)
@@ -29,6 +29,23 @@ Language
    presence of :ghc-flag:`-XRebindableSyntax` and
    :ghc-flag:`-XOverloadedStrings` (:ghc-ticket:`12688`).
 
+-  GHC is now a bit more strict in typechecking code generated by
+   :ghc-flag:`-XGeneralizedNewtypeDeriving`. For example, GHC will now reject
+   this program: ::
+
+      class C m where
+        foo :: C m => m ()
+
+      newtype N m a = N (m a)
+        deriving C -- This is now an error
+
+   This is in contrast to GHC 8.0.1 and earlier, which would accept this code.
+   To fix this code, simply remove the ``C m`` constraint from ``foo``, as it
+   is wholly unnecessary: ::
+
+      class C m where
+        foo :: m ()
+
 Compiler
 ~~~~~~~~