From 8cb9381befed4174624edfc80e09185c9340b4f6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 10 Mar 2017 13:12:24 -0400 Subject: AssociatedFile newtype To prevent any further mistakes like 1a497cefb47557f0b4788c606f9071be422b2511 This commit was sponsored by Francois Marier on Patreon. --- Types/ActionItem.hs | 12 +++++------- Types/Key.hs | 3 ++- Types/Transfer.hs | 6 +++--- 3 files changed, 10 insertions(+), 11 deletions(-) (limited to 'Types') diff --git a/Types/ActionItem.hs b/Types/ActionItem.hs index d9beb049d..73d845101 100644 --- a/Types/ActionItem.hs +++ b/Types/ActionItem.hs @@ -13,8 +13,6 @@ import Key import Types.Transfer import Git.FilePath -import Data.Maybe - data ActionItem = ActionItemAssociatedFile AssociatedFile | ActionItemKey @@ -37,15 +35,15 @@ instance MkActionItem (Transfer, TransferInfo) where mkActionItem = uncurry ActionItemFailedTransfer actionItemDesc :: ActionItem -> Key -> String -actionItemDesc (ActionItemAssociatedFile (Just f)) _ = f -actionItemDesc (ActionItemAssociatedFile Nothing) k = key2file k +actionItemDesc (ActionItemAssociatedFile (AssociatedFile (Just f))) _ = f +actionItemDesc (ActionItemAssociatedFile (AssociatedFile Nothing)) k = key2file k actionItemDesc ActionItemKey k = key2file k actionItemDesc (ActionItemBranchFilePath bfp) _ = descBranchFilePath bfp -actionItemDesc (ActionItemFailedTransfer _ i) k = - fromMaybe (key2file k) (associatedFile i) +actionItemDesc (ActionItemFailedTransfer _ i) k = + actionItemDesc (ActionItemAssociatedFile (associatedFile i)) k actionItemWorkTreeFile :: ActionItem -> Maybe FilePath -actionItemWorkTreeFile (ActionItemAssociatedFile af) = af +actionItemWorkTreeFile (ActionItemAssociatedFile (AssociatedFile af)) = af actionItemWorkTreeFile _ = Nothing actionItemTransferDirection :: ActionItem -> Maybe Direction diff --git a/Types/Key.hs b/Types/Key.hs index 9df1144aa..44ebe3ca0 100644 --- a/Types/Key.hs +++ b/Types/Key.hs @@ -23,7 +23,8 @@ data Key = Key } deriving (Eq, Ord, Read, Show) {- A filename may be associated with a Key. -} -type AssociatedFile = Maybe FilePath +newtype AssociatedFile = AssociatedFile (Maybe FilePath) + deriving (Show, Eq, Ord) {- There are several different varieties of keys. -} data KeyVariety diff --git a/Types/Transfer.hs b/Types/Transfer.hs index 349eccf4b..ade8fc763 100644 --- a/Types/Transfer.hs +++ b/Types/Transfer.hs @@ -36,13 +36,13 @@ data TransferInfo = TransferInfo , transferTid :: Maybe ThreadId , transferRemote :: Maybe Remote , bytesComplete :: Maybe Integer - , associatedFile :: Maybe FilePath + , associatedFile :: AssociatedFile , transferPaused :: Bool } deriving (Show, Eq, Ord) stubTransferInfo :: TransferInfo -stubTransferInfo = TransferInfo Nothing Nothing Nothing Nothing Nothing Nothing False +stubTransferInfo = TransferInfo Nothing Nothing Nothing Nothing Nothing (AssociatedFile Nothing) False data Direction = Upload | Download deriving (Eq, Ord, Show, Read) @@ -64,5 +64,5 @@ instance Arbitrary TransferInfo where <*> pure Nothing -- remote not needed <*> arbitrary -- associated file cannot be empty (but can be Nothing) - <*> arbitrary `suchThat` (/= Just "") + <*> (AssociatedFile <$> arbitrary `suchThat` (/= Just "")) <*> arbitrary -- cgit v1.2.3