Major refactoring of CoAxioms
[ghc.git] / compiler / typecheck / TcExpr.lhs
index 340b33c..67f212f 100644 (file)
@@ -31,7 +31,8 @@ import TcUnify
 import BasicTypes
 import Inst
 import TcBinds
-import FamInst( tcLookupFamInst )
+import FamInst          ( tcLookupFamInst )
+import FamInstEnv       ( famInstAxiom, dataFamInstRepTyCon )
 import TcEnv
 import TcArrows
 import TcMatches
@@ -1159,12 +1160,12 @@ tcTagToEnum loc fun_name arg res_ty
       = do { mb_fam <- tcLookupFamInst tc tc_args
            ; case mb_fam of 
               Nothing -> failWithTc (tagToEnumError ty doc3)
-               Just (rep_tc, rep_args) 
+               Just (rep_fam, rep_args) 
                    -> return ( mkTcSymCo (mkTcAxInstCo co_tc rep_args)
                              , rep_tc, rep_args )
                  where
-                   co_tc = expectJust "tcTagToEnum" $
-                           tyConFamilyCoercion_maybe rep_tc }
+                   co_tc  = famInstAxiom rep_fam
+                   rep_tc = dataFamInstRepTyCon rep_fam }
 
 tagToEnumError :: TcType -> SDoc -> SDoc
 tagToEnumError ty what