Extend Class.Class to include the TyCons of ATs
[ghc-hetmet.git] / compiler / main / HscTypes.lhs
index 26d6fab..29e440e 100644 (file)
@@ -82,7 +82,7 @@ import CoreSyn                ( CoreBind )
 import Id              ( Id )
 import Type            ( TyThing(..) )
 
-import Class           ( Class, classSelIds, classTyCon )
+import Class           ( Class, classSelIds, classTyCon, classATs )
 import TyCon           ( TyCon, tyConSelIds, tyConDataCons, isNewTyCon, newTyConCo )
 import DataCon         ( dataConImplicitIds )
 import PrelNames       ( gHC_PRIM )
@@ -633,15 +633,17 @@ implicitTyThings (ATyCon tc) = implicitNewCoTyCon tc ++
        -- For classes, add the class TyCon too (and its extras)
        -- and the class selector Ids
 implicitTyThings (AClass cl) = map AnId (classSelIds cl) ++
-                              extras_plus (ATyCon (classTyCon cl))
+                              extras_plus (ATyCon (classTyCon cl)) ++
+                              map ATyCon (classATs cl)
                         
 
        -- For data cons add the worker and wrapper (if any)
 implicitTyThings (ADataCon dc) = map AnId (dataConImplicitIds dc)
 
        -- For newtypes, add the implicit coercion tycon
-implicitNewCoTyCon tc | isNewTyCon tc = [ATyCon (newTyConCo tc)]
-                     | otherwise     = []
+implicitNewCoTyCon tc 
+  | isNewTyCon tc, Just co_con <- newTyConCo tc = [ATyCon co_con]
+  | otherwise = []
 
 extras_plus thing = thing : implicitTyThings thing