Skip to content

Commit

Permalink
Two things to do with -dsuppress-uniques
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
simonpj@microsoft.com committed Mar 4, 2010
1 parent d60d599 commit 4623207
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 8 deletions.
23 changes: 19 additions & 4 deletions compiler/basicTypes/OccName.lhs
Expand Up @@ -100,6 +100,7 @@ import UniqSet
import FastString
import Outputable
import Binary
import StaticFlags( opt_SuppressUniques )
import Data.Char
\end{code}

Expand Down Expand Up @@ -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

%************************************************************************
%* *
Expand Down
8 changes: 4 additions & 4 deletions compiler/basicTypes/Unique.lhs
Expand Up @@ -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
Expand Down Expand Up @@ -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))
Expand Down

0 comments on commit 4623207

Please sign in to comment.