The following patch updated the status of issue1229 to be resolved:
* Resolve issue1229: strictify checkPristineAgainstSlurpy.
Ignore-this: 8d35ecced399c9e556f92949065dd505
The code in replayRepository' in Darcs.Repository.Repair relies on being able
to catch exceptions that arise while running checkPristineAgainstSlurpy.
Unfortunately, due to unsafeInterleaveIO used in the SlurpDirectory code, the
exception does not get thrown until after the `catchall` is out of scope,
ie. when the "is_same" condition is evaluated (a supposed pure value, but
unsafeInterleaveIO has introduced latent exceptions into the equation). Making
the return from checkPristineAgainstSlurpy strict (using $!) forces execution
of the interleaved IO and trips the exception in the right context.
|