Fix info propigation from fallback combinator's second Property.

This commit is contained in:
Joey Hess 2015-01-19 14:43:25 -04:00
parent 4da4c4a70f
commit 04d4d0d6c4
2 changed files with 8 additions and 5 deletions

1
debian/changelog vendored
View File

@ -4,6 +4,7 @@ propellor (1.4.0) UNRELEASED; urgency=medium
* Properties now form a tree, instead of the flat list used before.
This includes the properties used inside a container.
(API change)
* Fix info propigation from fallback combinator's second Property.
-- Joey Hess <id@joeyh.name> Thu, 15 Jan 2015 20:14:29 -0400

View File

@ -92,11 +92,13 @@ check c p = adjustProperty p $ \satisfy -> ifM (liftIO c)
-- | Tries the first property, but if it fails to work, instead uses
-- the second.
fallback :: Property -> Property -> Property
fallback p1 p2 = adjustProperty p1 $ \satisfy -> do
r <- satisfy
if r == FailedChange
then propertySatisfy p2
else return r
fallback p1 p2 = p1' { propertyChildren = p2 : propertyChildren p1' }
where
p1' = adjustProperty p1 $ \satisfy -> do
r <- satisfy
if r == FailedChange
then propertySatisfy p2
else return r
-- | Marks a Property as trivial. It can only return FailedChange or
-- NoChange.