Commit 46232073 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Two things to do with -dsuppress-uniques

a) Even with -dsuppress-uniques, don't suppress them when outputing
   code, else the assembler falls over bleating

b) Do suppress uniques in names generated by TH.  It's a bit grungy
   to do this: see Note [Suppressing uniques in OccNames].  But
   it's only needed for test de-wobblification so the grunge isn't
   really important.
parent d60d5996
......@@ -100,6 +100,7 @@ import UniqSet
import FastString
import Outputable
import Binary
import StaticFlags( opt_SuppressUniques )
import Data.Char
\end{code}
......@@ -243,12 +244,26 @@ pprOccName :: OccName -> SDoc
pprOccName (OccName sp occ)
= getPprStyle $ \ sty ->
if codeStyle sty
then ftext (zEncodeFS occ)
else ftext occ <> if debugStyle sty
then braces (pprNameSpaceBrief sp)
else empty
then ftext (zEncodeFS occ)
else pp_occ <> pp_debug sty
where
pp_debug sty | debugStyle sty = braces (pprNameSpaceBrief sp)
| otherwise = empty
pp_occ | opt_SuppressUniques = text (strip_th_unique (unpackFS occ))
| otherwise = ftext occ
-- See Note [Suppressing uniques in OccNames]
strip_th_unique ('[' : c : _) | isAlphaNum c = []
strip_th_unique (c : cs) = c : strip_th_unique cs
strip_th_unique [] = []
\end{code}
Note [Suppressing uniques in OccNames]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is a hack to de-wobblify the OccNames that contain uniques from
Template Haskell that have been turned into a string in the OccName.
See Note [Unique OccNames from Template Haskell] in Convert.hs
%************************************************************************
%* *
......
......@@ -62,7 +62,7 @@ import BasicTypes
import FastTypes
import FastString
import Outputable
import StaticFlags
-- import StaticFlags
#if defined(__GLASGOW_HASKELL__)
--just for implementing a fast [0,61) -> Char function
......@@ -215,9 +215,9 @@ We do sometimes make strings with @Uniques@ in them:
\begin{code}
pprUnique :: Unique -> SDoc
pprUnique uniq
| opt_SuppressUniques
= empty -- Used exclusively to suppress uniques so you
| otherwise -- can compare output easily
-- | opt_SuppressUniques
-- = empty -- Used exclusively to suppress uniques so you
-- | otherwise -- can compare output easily
= case unpkUnique uniq of
(tag, u) -> finish_ppr tag u (text (iToBase62 u))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment