Fix #14692 by correcting an off-by-one error in TcGenDeriv
authorRyan Scott <ryan.gl.scott@gmail.com>
Sun, 21 Jan 2018 17:06:06 +0000 (12:06 -0500)
committerBen Gamari <ben@smart-cactus.org>
Mon, 22 Jan 2018 03:25:41 +0000 (22:25 -0500)
A silly mistake in `gen_Show_binds` was causing derived
`Show` instances for empty data types to case on the precedence
argument instead of the actual value being showed.

Test Plan: make test TEST=drv-empty-data

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14692

Differential Revision: https://phabricator.haskell.org/D4328

(cherry picked from commit 0074a08ea9dfd1416aa57a9504be73dcdf7a1e2b)

compiler/typecheck/TcGenDeriv.hs
testsuite/tests/deriving/should_compile/drv-empty-data.stderr

index b2d45fd..1ac3505 100644 (file)
@@ -1132,7 +1132,7 @@ gen_Show_binds get_fixity loc tycon
   = (unitBag shows_prec, emptyBag)
   where
     data_cons = tyConDataCons tycon
-    shows_prec = mkFunBindEC 1 loc showsPrec_RDR id (map pats_etc data_cons)
+    shows_prec = mkFunBindEC 2 loc showsPrec_RDR id (map pats_etc data_cons)
     comma_space = nlHsVar showCommaSpace_RDR
 
     pats_etc data_con
index e131c1c..5baf6a6 100644 (file)
@@ -7,7 +7,7 @@ Derived class instances:
     GHC.Read.readListPrec = GHC.Read.readListPrecDefault
   
   instance GHC.Show.Show (DrvEmptyData.Void a) where
-    GHC.Show.showsPrec z = case z of
+    GHC.Show.showsPrec z = case z of
   
   instance GHC.Classes.Ord (DrvEmptyData.Void a) where
     GHC.Classes.compare _ z = GHC.Types.EQ