@@ -215,7 +215,7 @@ actuallyUnify context@(Context _ (Descriptor firstContent _ _ _) _ (Descriptor s
215215 Error ->
216216 -- If there was an error, just pretend it is okay. This lets us avoid
217217 -- "cascading" errors where one problem manifests as multiple message.
218− return ()
218+ merge context Error
219219
220220
221221
@@ -226,7 +226,7 @@ unifyFlex :: Context -> Content -> Content -> Unify ()
226226unifyFlex context content otherContent =
227227 case otherContent of
228228 Error ->
229− return ()
229+ merge context Error
230230
231231 -- TODO see if wildcarding makes a noticable perf difference
232232
@@ -289,7 +289,7 @@ unifyRigid context maybeSuper content otherContent =
289289 mismatch
290290
291291 Error ->
292− return ()
292+ merge context Error
293293
294294
295295
@@ -348,7 +348,7 @@ unifyFlexSuper context super content otherContent =
348348 subUnify (_first context) realVar
349349
350350 Error ->
351− return ()
351+ merge context Error
352352
353353
354354combineRigidSupers :: SuperType -> SuperType -> Bool
@@ -493,7 +493,7 @@ unifyAlias context home name args realVar otherContent =
493493 subUnify realVar (_second context)
494494
495495 Error ->
496− return ()
496+ merge context Error
497497
498498
499499unifyAliasArgs :: [Variable] -> Context -> [(N.Name,Variable)] -> [(N.Name,Variable)] -> ([Variable] -> () -> IO r) -> ([Variable] -> () -> IO r) -> IO r
@@ -597,7 +597,7 @@ unifyStructure context flatType content otherContent =
597597 mismatch
598598
599599 Error ->
600− return ()
600+ merge context Error
601601
602602
603603