@@ -56,7 +56,7 @@ p_rdrName l@(L spn _) = located l $ \x -> do
56 if AnnOpenP `elem` ids
56 if AnnOpenP `elem` ids
57 then parens
57 then parens
59− (m, isUnit) =
59+ (m, avoidParens) =
61 Unqual occName ->
61 Unqual occName ->
62 (atom occName, False)
62 (atom occName, False)
@@ -68,8 +68,8 @@ p_rdrName l@(L spn _) = located l $ \x -> do
68 -- NOTE I'm not sure this "stable string" is stable enough, but
68 -- NOTE I'm not sure this "stable string" is stable enough, but
69 -- it looks like this is the most robust way to tell if we're
69 -- it looks like this is the most robust way to tell if we're
70 -- looking at exactly this piece of built-in syntax.
70 -- looking at exactly this piece of built-in syntax.
71− (atom name, nameStableString name == "$ghc-prim$GHC.Tuple$()")
71+ (atom name, nameStableString name `elem` avoidParensStableNames)
72− if isUnit
72+ if avoidParens
74 else parensWrapper (backticksWrapper m)
74 else parensWrapper (backticksWrapper m)
@@ -83,3 +83,13 @@ p_ieWildcard :: IEWildcard -> R ()
83p_ieWildcard = \case
83p_ieWildcard = \case
84 NoIEWildcard -> return ()
84 NoIEWildcard -> return ()
85 IEWildcard n -> parens (atom n)
85 IEWildcard n -> parens (atom n)
87+avoidParensStableNames :: [String]
88+avoidParensStableNames =
89+ [ "$ghc-prim$GHC.Tuple$()"
90+ , "$ghc-prim$GHC.Tuple$(,)"
91+ , "$ghc-prim$GHC.Tuple$(,,)"
92+ , "$ghc-prim$GHC.Tuple$(,,,)"
93+ , "$ghc-prim$GHC.Tuple$(,,,,)"
94+ , "$ghc-prim$GHC.Tuple$(,,,,,)"