Initial checkin of HetMet / -XModalTypes modifications
[ghc-hetmet.git] / compiler / rename / RnHsSyn.lhs
index 5fbe7f7..535aca2 100644 (file)
@@ -20,7 +20,7 @@ module RnHsSyn(
 
 import HsSyn
 import Class            ( FunDep )
-import TysWiredIn       ( tupleTyCon, listTyCon, parrTyCon, charTyCon )
+import TysWiredIn       ( tupleTyCon, listTyCon, parrTyCon, hetMetCodeTypeTyCon, charTyCon )
 import Name             ( Name, getName, isTyVarName )
 import NameSet
 import BasicTypes       ( Boxity )
@@ -40,6 +40,8 @@ charTyCon_name, listTyCon_name, parrTyCon_name :: Name
 charTyCon_name    = getName charTyCon
 listTyCon_name    = getName listTyCon
 parrTyCon_name    = getName parrTyCon
+hetMetCodeTypeTyCon_name :: Name
+hetMetCodeTypeTyCon_name = getName hetMetCodeTypeTyCon
 
 tupleTyCon_name :: Boxity -> Int -> Name
 tupleTyCon_name boxity n = getName (tupleTyCon boxity n)
@@ -59,6 +61,7 @@ extractHsTyNames ty
     get (HsAppTy ty1 ty2)      = getl ty1 `unionNameSets` getl ty2
     get (HsListTy ty)          = unitNameSet listTyCon_name `unionNameSets` getl ty
     get (HsPArrTy ty)          = unitNameSet parrTyCon_name `unionNameSets` getl ty
+    get (HsModalBoxType ecn ty) = (unitNameSet ecn) `unionNameSets` (unitNameSet hetMetCodeTypeTyCon_name) `unionNameSets` (getl ty)
     get (HsTupleTy _ tys)      = extractHsTyNames_s tys
     get (HsFunTy ty1 ty2)      = getl ty1 `unionNameSets` getl ty2
     get (HsPredTy p)           = extractHsPredTyNames p
@@ -68,8 +71,8 @@ extractHsTyNames ty
     get (HsRecTy flds)         = extractHsTyNames_s (map cd_fld_type flds)
     get (HsNumTy _)            = emptyNameSet
     get (HsTyVar tv)           = unitNameSet tv
-    get (HsSpliceTy {})        = emptyNameSet   -- Type splices mention no type variables
-    get (HsSpliceTyOut {})     = emptyNameSet   -- Ditto
+    get (HsSpliceTy _ fvs _)   = fvs
+    get (HsQuasiQuoteTy {})    = emptyNameSet
     get (HsKindSig ty _)       = getl ty
     get (HsForAllTy _ tvs
                     ctxt ty)   = (extractHsCtxtTyNames ctxt
@@ -77,6 +80,8 @@ extractHsTyNames ty
                                             `minusNameSet`
                                   mkNameSet (hsLTyVarNames tvs)
     get (HsDocTy ty _)         = getl ty
+    get (HsCoreTy {})          = emptyNameSet  -- This probably isn't quite right
+                                               -- but I don't think it matters
 
 extractHsTyNames_s  :: [LHsType Name] -> NameSet
 extractHsTyNames_s tys = foldr (unionNameSets . extractHsTyNames) emptyNameSet tys