Fix Trac #2999: change an ASSERT to a WARN
authorsimonpj@microsoft.com <unknown>
Wed, 4 Feb 2009 08:38:00 +0000 (08:38 +0000)
committersimonpj@microsoft.com <unknown>
Wed, 4 Feb 2009 08:38:00 +0000 (08:38 +0000)
A bug in the constraint simplifier means that an equality can be solved
twice.  It's harmless, and will go away with the new constraint simplifier.
Hence warning, to avoid unnecessary outright failure on eg Trac #2999.

compiler/typecheck/TcTyFuns.lhs

index 0066d2f..5777955 100644 (file)
@@ -37,6 +37,7 @@ import Name
 import Bag
 import Outputable
 import SrcLoc  ( Located(..) )
+import Util    ( debugIsOn )
 import Maybes
 import FastString
 
@@ -278,7 +279,15 @@ no further propoagation is possible.
 --
 normaliseEqs :: [Inst] -> TcM EqConfig
 normaliseEqs eqs 
-  = do { ASSERTM2( allM wantedEqInstIsUnsolved eqs, ppr eqs )
+  = do { if debugIsOn then do { all_unsolved <- allM wantedEqInstIsUnsolved eqs
+                                     ; let msg = ptext (sLit "(This warning is harmless; for Simon & Manuel)")
+                                     ; WARN( not all_unsolved, msg $$ ppr eqs ) return () }
+                     else return ()
+           -- This is just a warning (not an error) because a current
+           -- harmless bug means that we sometimes solve the same
+           -- equality more than once It'll go away with the new
+           -- solver. See Trac #2999 for example
+
        ; traceTc $ ptext (sLit "Entering normaliseEqs")
 
        ; (eqss, skolemss) <- mapAndUnzipM normEqInst eqs