-- Class TyCons are not pormoted

mkTupleTyCon :: Name
             -> Kind    -- ^ Kind of the resulting 'TyCon'
             -> Arity   -- ^ Arity of the tuple
             -> [TyVar] -- ^ 'TyVar's scoped over: see 'tyConTyVars'
             -> DataCon
             -> TupleSort    -- ^ Whether the tuple is boxed or unboxed
             -> Maybe TyCon  -- ^ Promoted version
             -> TyCon
mkTupleTyCon name kind arity tyvars con sort prom_tc
  = TupleTyCon {
        tyConUnique = nameUnique name,
        tyConName = name,
        tyConKind = kind,
        tyConArity = arity,
        tyConTupleSort = sort,
        tyConTyVars = tyvars,
        dataCon = con,
        tcPromoted = prom_tc
    }
mkTupleTyCon :: Name
             -> Kind    -- ^ Kind of the resulting 'TyCon'
             -> Arity   -- ^ Arity of the tuple
             -> [TyVar] -- ^ 'TyVar's scoped over: see 'tyConTyVars'
             -> DataCon
             -> TupleSort    -- ^ Whether the tuple is boxed or unboxed
             -> Maybe TyCon  -- ^ Promoted version
             -> TyCon
mkTupleTyCon name kind arity tyvars con sort prom_tc
  = TupleTyCon {
        tyConUnique = nameUnique name,
        tyConName = name,
        tyConKind = kind,
        tyConArity = arity,
        tyConTupleSort = sort,
        tyConTyVars = tyvars,
        dataCon = con,
        tcPromoted = prom_tc
    }
mkTupleTyCon name kind arity tyvars con sort prom_tc
  = TupleTyCon {
        tyConUnique = nameUnique name,
        tyConName = name,
        tyConKind = kind,
        tyConArity = arity,
        tyConTupleSort = sort,
        tyConTyVars = tyvars,
        dataCon = con,
        tcPromoted = prom_tc
    }