Undo making Any into a type family, for now
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 18 Sep 2012 16:31:28 +0000 (17:31 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 18 Sep 2012 16:31:28 +0000 (17:31 +0100)
Making Any a type family is the right thing to do, but it messes up
the proxy kind arguments in TypeLits and Singletons, so I'm backing it
out for now.

More thought required!

compiler/prelude/TysPrim.lhs
compiler/stgSyn/CoreToStg.lhs

index 792c174..5d177d5 100644 (file)
@@ -717,6 +717,11 @@ anyTy :: Type
 anyTy = mkTyConTy anyTyCon
 
 anyTyCon :: TyCon
+anyTyCon = mkLiftedPrimTyCon anyTyConName kind 1 PtrRep
+  where kind = ForAllTy kKiVar (mkTyVarTy kKiVar)
+
+{-   Can't do this yet without messing up kind proxies
+anyTyCon :: TyCon
 anyTyCon = mkSynTyCon anyTyConName kind [kKiVar] 
                       syn_rhs
                       NoParentTyCon
@@ -724,6 +729,7 @@ anyTyCon = mkSynTyCon anyTyConName kind [kKiVar]
     kind = ForAllTy kKiVar (mkTyVarTy kKiVar)
     syn_rhs = SynFamilyTyCon { synf_open = False, synf_injective = True }
                   -- NB Closed, injective
+-}
 
 anyTypeOfKind :: Kind -> Type
 anyTypeOfKind kind = mkNakedTyConApp anyTyCon [kind]
index 6c315b3..678136d 100644 (file)
@@ -476,6 +476,7 @@ mkStgAltType bndr alts = case repType (idType bndr) of
   where
    _is_poly_alt_tycon tc
         =  isFunTyCon tc
+        || isPrimTyCon tc   -- "Any" is lifted but primitive
         || isFamilyTyCon tc -- Type family; e.g. Any, or arising from strict
                             -- function application where argument has a
                             -- type-family type