Fix Trac #7560.
authorRichard Eisenberg <eir@cis.upenn.edu>
Wed, 9 Jan 2013 04:30:16 +0000 (23:30 -0500)
committerRichard Eisenberg <eir@cis.upenn.edu>
Wed, 9 Jan 2013 04:30:16 +0000 (23:30 -0500)
Code in conflictInstErr did not handle the case where some branches
of a branched family instance had an error and some didn't. It was
all or nothing. Now, if there are no conflicts for a given branch,
conflictInstErr just ignores the branch instead of panicking.

compiler/typecheck/FamInst.lhs

index aba3b12..4e47a2d 100644 (file)
@@ -322,8 +322,8 @@ conflictInstErr fam_inst branch conflictingMatch
   = addFamInstsErr (ptext (sLit "Conflicting family instance declarations:"))
                    [(fam_inst, branch),
                     (confInst, famInstNthBranch confInst confIndex)]
-  | otherwise
-  = pprPanic "conflictInstErr" (pprFamInstBranch (famInstAxiom fam_inst) branch)
+  | otherwise -- no conflict on this branch; see Trac #7560
+  = return ()
 
 addFamInstsErr :: SDoc -> [(FamInst Branched, FamInstBranch)] -> TcRn ()
 addFamInstsErr herald insts