-eqH_Char_RDR = primOpRdrName CharEqOp
-ltH_Char_RDR = primOpRdrName CharLtOp
-eqH_Word_RDR = primOpRdrName WordEqOp
-ltH_Word_RDR = primOpRdrName WordLtOp
-eqH_Addr_RDR = primOpRdrName AddrEqOp
-ltH_Addr_RDR = primOpRdrName AddrLtOp
-eqH_Float_RDR = primOpRdrName FloatEqOp
-ltH_Float_RDR = primOpRdrName FloatLtOp
-eqH_Double_RDR = primOpRdrName DoubleEqOp
-ltH_Double_RDR = primOpRdrName DoubleLtOp
-eqH_Int_RDR = primOpRdrName IntEqOp
-ltH_Int_RDR = primOpRdrName IntLtOp
-geH_RDR = primOpRdrName IntGeOp
-leH_RDR = primOpRdrName IntLeOp
-minusH_RDR = primOpRdrName IntSubOp
-
-tagToEnumH_RDR = primOpRdrName TagToEnumOp
+ghcPrimExports :: [RdrAvailInfo]
+ = AvailTC cCallableOcc [ cCallableOcc ] :
+ AvailTC cReturnableOcc [ cReturnableOcc ] :
+ map (Avail . nameOccName . idName) ghcPrimIds ++
+ map (Avail . primOpOcc) allThePrimOps ++
+ [ AvailTC occ [occ] |
+ n <- funTyCon : primTyCons, let occ = nameOccName (tyConName n)
+ ]
+ where
+ cCallableOcc = nameOccName cCallableClassName
+ cReturnableOcc = nameOccName cReturnableClassName
+
+cCallableClassDecl
+ = mkClassDecl
+ ([], getRdrName cCallableClassName, [openAlpha])
+ [] -- no fds
+ [] -- no sigs
+ Nothing -- no mbinds
+ noSrcLoc
+
+cReturnableClassDecl
+ = mkClassDecl
+ ([], getRdrName cReturnableClassName, [openAlpha])
+ [] -- no fds
+ [] -- no sigs
+ Nothing -- no mbinds
+ noSrcLoc
+
+alpha = mkRdrUnqual (mkVarOcc FSLIT("a"))
+openAlpha = IfaceTyVar alpha openTypeKind
+liftedAlpha = IfaceTyVar alpha liftedTypeKind