Properly keep track of whether normalising given or wanted dicts
[ghc-hetmet.git] / compiler / basicTypes / Name.lhs
index 488dbca..c6e7d25 100644 (file)
@@ -30,7 +30,7 @@ module Name (
        tidyNameOcc, 
        hashName, localiseName,
 
-       nameSrcLoc, nameSrcSpan,
+       nameSrcLoc, nameSrcSpan, pprNameLoc,
 
        isSystemName, isInternalName, isExternalName,
        isTyVarName, isTyConName, isWiredInName, isBuiltInSyntax,
@@ -401,6 +401,16 @@ ppr_occ_name occ = ftext (occNameFS occ)
 -- In code style, we Z-encode the strings.  The results of Z-encoding each FastString are
 -- cached behind the scenes in the FastString implementation.
 ppr_z_occ_name occ = ftext (zEncodeFS (occNameFS occ))
+
+-- Prints (if mod information is available) "Defined at <loc>" or 
+--  "Defined in <mod>" information for a Name.
+pprNameLoc :: Name -> SDoc
+pprNameLoc name
+  | isGoodSrcSpan loc = pprDefnLoc loc
+  | isInternalName name || isSystemName name 
+                      = ptext SLIT("<no location info>")
+  | otherwise         = ptext SLIT("Defined in ") <> ppr (nameModule name)
+  where loc = nameSrcSpan name
 \end{code}
 
 %************************************************************************