Fix Trac #3731: more superclass subtlety (sigh)
[ghc-hetmet.git] / compiler / typecheck / TcCanonical.lhs
index 7fdb63e..60d1836 100644 (file)
@@ -320,7 +320,10 @@ happen.
 newSCWorkFromFlavored :: EvVar -> CtFlavor -> Class -> [Xi] -> TcS CanonicalCts
 -- Returns superclasses, see Note [Adding superclasses]
 newSCWorkFromFlavored ev orig_flavor cls xis 
-  = do { let (tyvars, sc_theta, _, _) = classBigSig cls 
+  | isEmptyVarSet (tyVarsOfTypes xis)
+  = return emptyCCan
+  | otherwise
+  = do { let (tyvars, sc_theta, _, _) = classBigSig cls
              sc_theta1 = substTheta (zipTopTvSubst tyvars xis) sc_theta
        ; sc_vars <- zipWithM inst_one sc_theta1 [0..]
        ; mkCanonicals flavor sc_vars }