fix runtime crash on incomplete pattern match in lambda
This was very susprising to me that it was not caught by -Wall, so I enabled -Wincomplete-uni-patterns to catch such things. It found a second one just lines above, but no others anywhere.
This commit is contained in:
parent
c22c07bbed
commit
bcc0ec5b99
2 changed files with 11 additions and 6 deletions
|
@ -84,12 +84,17 @@ parseRemoteLocation s repo = ret $ calcloc s
|
|||
where
|
||||
replacement = decodeBS' $ S.drop (S.length prefix) $
|
||||
S.take (S.length bestkey - S.length suffix) bestkey
|
||||
(ConfigKey bestkey, ConfigValue bestvalue) = maximumBy longestvalue insteadofs
|
||||
(bestkey, bestvalue) =
|
||||
case maximumBy longestvalue insteadofs of
|
||||
(ConfigKey k, ConfigValue v) -> (k, v)
|
||||
(ConfigKey k, NoConfigValue) -> (k, mempty)
|
||||
longestvalue (_, a) (_, b) = compare b a
|
||||
insteadofs = filterconfig $ \(ConfigKey k, ConfigValue v) ->
|
||||
prefix `S.isPrefixOf` k &&
|
||||
suffix `S.isSuffixOf` k &&
|
||||
v `S.isPrefixOf` encodeBS l
|
||||
insteadofs = filterconfig $ \case
|
||||
(ConfigKey k, ConfigValue v) ->
|
||||
prefix `S.isPrefixOf` k &&
|
||||
suffix `S.isSuffixOf` k &&
|
||||
v `S.isPrefixOf` encodeBS l
|
||||
(_, NoConfigValue) -> False
|
||||
filterconfig f = filter f $
|
||||
concatMap splitconfigs $ M.toList $ fullconfig repo
|
||||
splitconfigs (k, vs) = map (\v -> (k, v)) vs
|
||||
|
|
|
@ -371,7 +371,7 @@ Executable git-annex
|
|||
tasty-quickcheck,
|
||||
tasty-rerun
|
||||
CC-Options: -Wall
|
||||
GHC-Options: -Wall -fno-warn-tabs
|
||||
GHC-Options: -Wall -fno-warn-tabs -Wincomplete-uni-patterns
|
||||
Extensions: PackageImports, LambdaCase
|
||||
-- Some things don't work with the non-threaded RTS.
|
||||
GHC-Options: -threaded
|
||||
|
|
Loading…
Reference in a new issue