[project @ 1998-03-03 18:57:49 by sof]
authorsof <unknown>
Tue, 3 Mar 1998 18:57:49 +0000 (18:57 +0000)
committersof <unknown>
Tue, 3 Mar 1998 18:57:49 +0000 (18:57 +0000)
addAvailEnv: special handling of explicit exports of class methods.

ghc/compiler/rename/RnNames.lhs

index 097cdd7..127eef7 100644 (file)
@@ -412,11 +412,17 @@ addAvailEnv :: Bool -> RdrNameIE -> AvailEnv -> AvailInfo -> RnM s d AvailEnv
 addAvailEnv warn_dups ie env NotAvailable   = returnRn env
 addAvailEnv warn_dups ie env (AvailTC _ []) = returnRn env
 addAvailEnv warn_dups ie env avail
-  | warn_dups = mapMaybeRn (addErrRn  . availClashErr) () conflict `thenRn_`
+  | warn_dups = mapMaybeRn (addErrRn . availClashErr) () conflict `thenRn_`
                 returnRn (addToFM_C addAvail env key elt)
   | otherwise = returnRn (addToFM_C addAvail env key elt)
   where
-   key  = nameOccName (availName avail)
+   occ_avail = nameOccName (availName avail)
+   occ_ie    = ieOcc ie
+   key
+    | occ_ie == occ_avail = occ_avail
+    | otherwise           = occ_ie 
+        -- export item is a class method, use export occ name instead.
+
    elt  = (ie,avail,reports_on)
 
    reports_on