Use OPTIONS rather than OPTIONS_GHC for pragmas
[ghc-hetmet.git] / compiler / basicTypes / RdrName.lhs
index 2090bea..9dd0670 100644 (file)
@@ -4,6 +4,13 @@
 %
 
 \begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings
+-- for details
+
 module RdrName (
        RdrName(..),    -- Constructors exported only to BinIface
 
@@ -35,7 +42,7 @@ module RdrName (
        Provenance(..), pprNameProvenance,
        Parent(..), 
        ImportSpec(..), ImpDeclSpec(..), ImpItemSpec(..), 
-       importSpecLoc, importSpecModule
+       importSpecLoc, importSpecModule, isExplicitItem
   ) where 
 
 #include "HsVersions.h"
@@ -302,6 +309,7 @@ data GlobalRdrElt
     }
 
 data Parent = NoParent | ParentIs Name
+             deriving (Eq)
 
 instance Outputable Parent where
    ppr NoParent     = empty
@@ -309,8 +317,20 @@ instance Outputable Parent where
    
 
 plusParent :: Parent -> Parent -> Parent
-plusParent NoParent     rel = ASSERT( case rel of { NoParent -> True; other -> False } )    NoParent
-plusParent (ParentIs n) rel = ASSERT( case rel of { ParentIs m -> n==m;  other -> False } ) ParentIs n
+plusParent p1 p2 = ASSERT2( p1 == p2, parens (ppr p1) <+> parens (ppr p2) )
+                   p1
+
+{- Why so complicated? -=chak
+plusParent :: Parent -> Parent -> Parent
+plusParent NoParent     rel = 
+  ASSERT2( case rel of { NoParent -> True; other -> False }, 
+          ptext SLIT("plusParent[NoParent]: ") <+> ppr rel )    
+  NoParent
+plusParent (ParentIs n) rel = 
+  ASSERT2( case rel of { ParentIs m -> n==m;  other -> False }, 
+          ptext SLIT("plusParent[ParentIs]:") <+> ppr n <> comma <+> ppr rel )
+  ParentIs n
+ -}
 
 emptyGlobalRdrEnv = emptyOccEnv
 
@@ -527,6 +547,10 @@ importSpecLoc (ImpSpec _    item)   = is_iloc item
 importSpecModule :: ImportSpec -> ModuleName
 importSpecModule is = is_mod (is_decl is)
 
+isExplicitItem :: ImpItemSpec -> Bool
+isExplicitItem ImpAll                       = False
+isExplicitItem (ImpSome {is_explicit = exp}) = exp
+
 -- Note [Comparing provenance]
 -- Comparison of provenance is just used for grouping 
 -- error messages (in RnEnv.warnUnusedBinds)