+import Util ( assoc, panic )
+
+nullSpecEnv = error "TysWiredIn:nullSpecEnv = "
+addOneToSpecEnv = error "TysWiredIn:addOneToSpecEnv = "
+pc_gen_specs = error "TysWiredIn:pc_gen_specs "
+mkSpecInfo = error "TysWiredIn:SpecInfo"
+
+alpha_tyvar = [alphaTyVar]
+alpha_ty = [alphaTy]
+alpha_beta_tyvars = [alphaTyVar, betaTyVar]
+
+pcDataTyCon, pcNewTyCon
+ :: Unique{-TyConKey-} -> Module -> FAST_STRING
+ -> [TyVar] -> [Id] -> TyCon
+
+pcDataTyCon = pc_tycon DataType
+pcNewTyCon = pc_tycon NewType
+
+pc_tycon new_or_data key mod str tyvars cons
+ = mkDataTyCon (mkWiredInName key (OrigName mod str) ExportAll) tycon_kind
+ tyvars [{-no context-}] cons [{-no derivings-}]
+ new_or_data
+ where
+ tycon_kind = foldr (mkArrowKind . tyVarKind) mkBoxedTypeKind tyvars
+
+pcSynTyCon key mod str kind arity tyvars expansion
+ = mkSynTyCon
+ (mkWiredInName key (OrigName mod str) ExportAll)
+ kind arity tyvars expansion
+
+pcDataCon :: Unique{-DataConKey-} -> Module -> FAST_STRING
+ -> [TyVar] -> ThetaType -> [TauType] -> TyCon -> SpecEnv -> Id
+pcDataCon key mod str tyvars context arg_tys tycon specenv
+ = mkDataCon (mkWiredInName key (OrigName mod str) ExportAll)
+ [ NotMarkedStrict | a <- arg_tys ]
+ [ {- no labelled fields -} ]
+ tyvars context arg_tys tycon
+ -- specenv
+
+pcGenerateDataSpecs :: Type -> SpecEnv
+pcGenerateDataSpecs ty
+ = pc_gen_specs False err err err ty
+ where
+ err = panic "PrelUtils:GenerateDataSpecs"