Preserve synonyms if possible (leads to better error messages) through flattening.
authorDimitrios Vytiniotis <dimitris@microsoft.com>
Thu, 19 Jul 2012 09:26:45 +0000 (11:26 +0200)
committerDimitrios Vytiniotis <dimitris@microsoft.com>
Thu, 19 Jul 2012 09:26:45 +0000 (11:26 +0200)
compiler/typecheck/TcCanonical.lhs

index 7f1288c..b013e25 100644 (file)
@@ -506,7 +506,8 @@ flatten :: SubGoalDepth -- Depth
 flatten d f ctxt ty 
   | Just ty' <- tcView ty
   = do { (xi, co) <- flatten d f ctxt ty'
-       ; return (xi,co) } 
+       ; if eqType xi ty then return (ty,co) else return (xi,co) } 
+       -- Small tweak for better error messages 
 
 flatten _ _ _ xi@(LitTy {}) = return (xi, mkTcReflCo xi)