[project @ 2005-03-08 17:19:28 by simonmar]
[ghc-hetmet.git] / ghc / compiler / basicTypes / OccName.lhs
index 2de02e7..fb66916 100644 (file)
@@ -27,7 +27,7 @@ module OccName (
        foldOccSet, isEmptyOccSet, intersectOccSet, intersectsOccSet,
 
        mkOccName, mkOccFS, mkSysOcc, mkSysOccFS, mkFCallOcc, mkKindOccFS,
-       mkVarOcc, mkVarOccEncoded,
+       mkVarOcc, mkVarOccEncoded, mkTyVarOcc,
        mkSuperDictSelOcc, mkDFunOcc, mkForeignExportOcc,
        mkDictOcc, mkIPOcc, mkWorkerOcc, mkMethodOcc, mkDefaultMethodOcc,
        mkDerivedTyConOcc, mkClassTyConOcc, mkClassDataConOcc, mkSpecOcc,
@@ -35,7 +35,7 @@ module OccName (
        mkDataConWrapperOcc, mkDataConWorkerOcc,
        
        isVarOcc, isTvOcc, isTcOcc, isDataOcc, isDataSymOcc, isSymOcc, isValOcc,
-       reportIfUnused,
+       parenSymOcc, reportIfUnused,
 
        occNameFS, occNameString, occNameUserString, occNameSpace, 
        occNameFlavour, briefOccNameFlavour,
@@ -93,7 +93,7 @@ type EncodedString = String   -- Encoded form
 pprEncodedFS :: EncodedFS -> SDoc
 pprEncodedFS fs
   = getPprStyle        $ \ sty ->
-    if userStyle sty
+    if userStyle sty || dumpStyle sty
        -- ftext (decodeFS fs) would needlessly pack the string again
        then text (decode (unpackFS fs))
         else ftext fs
@@ -241,6 +241,9 @@ mkOccName ns s = mkSysOcc ns (encode s)
 mkVarOcc :: UserFS -> OccName
 mkVarOcc fs = mkSysOccFS varName (encodeFS fs)
 
+mkTyVarOcc :: UserFS -> OccName
+mkTyVarOcc fs = mkSysOccFS tvName (encodeFS fs)
+
 mkVarOccEncoded :: EncodedFS -> OccName
 mkVarOccEncoded fs = mkSysOccFS varName fs
 \end{code}
@@ -402,9 +405,15 @@ isDataOcc other                   = False
 
 -- Any operator (data constructor or variable)
 -- Pretty inefficient!
-isSymOcc (OccName DataName s) = isLexConSym (decodeFS s)
-isSymOcc (OccName VarName s)  = isLexSym (decodeFS s)
-isSymOcc other               = False
+isSymOcc (OccName DataName s)  = isLexConSym (decodeFS s)
+isSymOcc (OccName TcClsName s) = isLexConSym (decodeFS s)
+isSymOcc (OccName VarName s)   = isLexSym (decodeFS s)
+isSymOcc other                = False
+
+parenSymOcc :: OccName -> SDoc -> SDoc
+-- Wrap parens around an operator
+parenSymOcc occ doc | isSymOcc occ = parens doc
+                   | otherwise    = doc
 \end{code}