Add a couple of missing cases to isTcReflCo and isTcReflCo_maybe
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 23 Dec 2014 15:40:54 +0000 (15:40 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 23 Dec 2014 16:01:25 +0000 (16:01 +0000)
compiler/typecheck/TcEvidence.hs

index 60ac889..552a403 100644 (file)
@@ -157,12 +157,14 @@ isEqVar v = case tyConAppTyCon_maybe (varType v) of
                Nothing -> False
 
 isTcReflCo_maybe :: TcCoercion -> Maybe TcType
-isTcReflCo_maybe (TcRefl _ ty) = Just ty
-isTcReflCo_maybe _             = Nothing
+isTcReflCo_maybe (TcRefl _ ty)   = Just ty
+isTcReflCo_maybe (TcCoercion co) = isReflCo_maybe co
+isTcReflCo_maybe _               = Nothing
 
 isTcReflCo :: TcCoercion -> Bool
-isTcReflCo (TcRefl {}) = True
-isTcReflCo _           = False
+isTcReflCo (TcRefl {})     = True
+isTcReflCo (TcCoercion co) = isReflCo co
+isTcReflCo _               = False
 
 getTcCoVar_maybe :: TcCoercion -> Maybe CoVar
 getTcCoVar_maybe (TcCoVarCo v) = Just v