Fix negative literals in patterns (fixes #49)

pull/51/head
Lennart Spitzner 2017-08-20 00:25:11 +02:00
parent baac0a6a7e
commit fba8ad1a99
2 changed files with 15 additions and 2 deletions

View File

@ -1017,6 +1017,15 @@ func = do
| otherwise -> max (defLen - 0.05) (defLen * 0.95) -- TODO | otherwise -> max (defLen - 0.05) (defLen * 0.95) -- TODO
return True return True
#test issue 49
foo n = case n of
1 -> True
-1 -> False
bar n = case n of
(-2, -2) -> (-2, -2)
############################################################################### ###############################################################################
############################################################################### ###############################################################################

View File

@ -131,8 +131,12 @@ layoutPat lpat@(L _ pat) = docWrapNode lpat $ case pat of
wrapPatPrepend pat1 (docLit $ Text.pack "!") wrapPatPrepend pat1 (docLit $ Text.pack "!")
LazyPat pat1 -> do LazyPat pat1 -> do
wrapPatPrepend pat1 (docLit $ Text.pack "~") wrapPatPrepend pat1 (docLit $ Text.pack "~")
NPat llit@(L _ (OverLit olit _ _ _)) _ _ _ -> do NPat llit@(L _ (OverLit olit _ _ _)) mNegative _ _ -> do
fmap Seq.singleton $ docWrapNode llit $ allocateNode $ overLitValBriDoc olit litDoc <- docWrapNode llit $ allocateNode $ overLitValBriDoc olit
negDoc <- docLit $ Text.pack "-"
pure $ case mNegative of
Just{} -> Seq.fromList [negDoc, litDoc]
Nothing -> Seq.singleton litDoc
-- if MIN_VERSION_ghc(8,0,0) -- if MIN_VERSION_ghc(8,0,0)
-- VarPat n -> return $ stringLayouter lpat $ lrdrNameToText n -- VarPat n -> return $ stringLayouter lpat $ lrdrNameToText n