[add union values to fixer
John Meacham <john@repetae.net>**20060125064544] hunk ./Fixer/Fixer.hs 60
-data Value a = ConstValue a | IV (RvValue a)
+instance Fixable a => Monoid (Value a) where
+    mempty = value bottom
+    mappend a b = UnionValue a b
+
+data Value a = UnionValue (Value a) (Value a) | ConstValue a | IV (RvValue a)
hunk ./Fixer/Fixer.hs 69
+    showsPrec _ (UnionValue a b) = showString "<<" . shows a . shows b . showString ">>"
hunk ./Fixer/Fixer.hs 109
+addAction (UnionValue a b) act = addAction a act >> addAction b act
hunk ./Fixer/Fixer.hs 129
+modifiedSuperSetOf UnionValue {} _ _ =  Rule $ fail "Fixer: You cannot modify a union value"
hunk ./Fixer/Fixer.hs 135
+UnionValue {} `isSuperSetOf` _ = Rule $  fail "Fixer: You cannot modify a union value"
hunk ./Fixer/Fixer.hs 152
-readValue :: MonadIO m => Value a -> m a
+readValue :: (Fixable a,MonadIO m) => Value a -> m a
hunk ./Fixer/Fixer.hs 155
+readValue (UnionValue a b) = liftIO $ do
+    a' <- readValue a
+    b' <- readValue b
+    return (lub a' b')
hunk ./Fixer/Supply.hs 36
-supplyReadValues :: MonadIO m => Supply b a -> m [(b,a)]
+supplyReadValues :: (Fixable a,MonadIO m) => Supply b a -> m [(b,a)]