From b27517a53ef4a8cdc62d52289600f02e28a46a7c Mon Sep 17 00:00:00 2001
From: Austin Seipp <austin@well-typed.com>
Date: Thu, 20 Feb 2014 01:28:00 -0600
Subject: [PATCH] Really fix #5682 (parsing of promoted datacons)

Patch submitted by an anonymous friend on the bug tracker.

This also fixes TH_RichKinds2 which had a slight message output wibble
(it uses the qualified name of the promoted datacon)

Signed-off-by: Austin Seipp <austin@well-typed.com>

(cherry picked from commit d3af9807ca8a1db0bc9298ea50895ee9df55edb7)
---
 compiler/parser/Parser.y.pp             | 7 +++----
 testsuite/tests/th/TH_RichKinds2.stderr | 2 +-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp
index d2bc463b621c..27d6c3839f1a 100644
--- a/compiler/parser/Parser.y.pp
+++ b/compiler/parser/Parser.y.pp
@@ -1151,12 +1151,11 @@ atype :: { LHsType RdrName }
         | TH_ID_SPLICE                   { LL $ mkHsSpliceTy $ L1 $ HsVar $
                                            mkUnqual varName (getTH_ID_SPLICE $1) }
                                                       -- see Note [Promotion] for the followings
-        | SIMPLEQUOTE qconid                          { LL $ HsTyVar $ unLoc $2 }
-        | SIMPLEQUOTE  '(' ')'                        { LL $ HsTyVar $ getRdrName unitDataCon }
+        | SIMPLEQUOTE qcon                            { LL $ HsTyVar $ unLoc $2 }
         | SIMPLEQUOTE  '(' ctype ',' comma_types1 ')' { LL $ HsExplicitTupleTy [] ($3 : $5) }
         | SIMPLEQUOTE  '[' comma_types0 ']'           { LL $ HsExplicitListTy placeHolderKind $3 }
-        | SIMPLEQUOTE '(' qconop ')'                  { LL $ HsTyVar (unLoc $3) }
-        | SIMPLEQUOTE '(' varop  ')'                  { LL $ HsTyVar (unLoc $3) }
+        | SIMPLEQUOTE var                             { LL $ HsTyVar $ unLoc $2 }
+
         | '[' ctype ',' comma_types1 ']'              { LL $ HsExplicitListTy placeHolderKind ($2 : $4) }
         | INTEGER            {% mkTyLit $ LL $ HsNumTy $ getINTEGER $1 }
         | STRING             {% mkTyLit $ LL $ HsStrTy $ getSTRING  $1 }
diff --git a/testsuite/tests/th/TH_RichKinds2.stderr b/testsuite/tests/th/TH_RichKinds2.stderr
index 625d03e9615f..8370df332d31 100644
--- a/testsuite/tests/th/TH_RichKinds2.stderr
+++ b/testsuite/tests/th/TH_RichKinds2.stderr
@@ -3,7 +3,7 @@ TH_RichKinds2.hs:23:4: Warning:
     data SMaybe_0 (t_1 :: k_0 -> *) (t_3 :: Data.Maybe.Maybe k_0)
     = forall . t_3 ~ 'Data.Maybe.Nothing => SNothing_4
     | forall a_5 . t_3 ~ 'Data.Maybe.Just a_5 => SJust_6 (t_1 a_5)
-type instance TH_RichKinds2.Map f_7 '[] = '[]
+type instance TH_RichKinds2.Map f_7 'GHC.Types.[] = 'GHC.Types.[]
 type instance TH_RichKinds2.Map f_8
                                 ('GHC.Types.: h_9 t_10) = 'GHC.Types.: (f_8 h_9)
                                                                        (TH_RichKinds2.Map f_8 t_10)
-- 
GitLab