From 7f69ab8b43f5fc07cd125d019ede0f2e14c55b25 Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Sat, 6 Aug 2016 14:05:42 +0200 Subject: [PATCH] Fix some record pattern case involving "pun" --- .../Haskell/Brittany/Layouters/Pattern.hs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Language/Haskell/Brittany/Layouters/Pattern.hs b/src/Language/Haskell/Brittany/Layouters/Pattern.hs index 356f3a8..1ce89cc 100644 --- a/src/Language/Haskell/Brittany/Layouters/Pattern.hs +++ b/src/Language/Haskell/Brittany/Layouters/Pattern.hs @@ -54,17 +54,23 @@ layoutPat lpat@(L _ pat) = docWrapNode lpat $ case pat of ConPatIn lname (RecCon (HsRecFields fs@(_:_) Nothing)) -> do let t = lrdrNameToText lname fds <- fs `forM` \(L _ (HsRecField (L _ (FieldOcc lnameF _)) fPat _)) -> do - fExpDoc <- docSharedWrapper layoutPat fPat + -- special casing for some record special thingy.. + fExpDoc <- case fPat of + (L _ (VarPat (L _ (Unqual x)))) | occNameString x == "pun-right-hand-side" -> return Nothing + _ -> Just <$> docSharedWrapper layoutPat fPat return $ (lrdrNameToText lnameF, fExpDoc) docSeq [ appSep $ docLit t , appSep $ docLit $ Text.pack "{" , docSeq $ List.intersperse docCommaSep - $ fds <&> \(fieldName, fieldDoc) -> docSeq - [ appSep $ docLit $ fieldName - , appSep $ docLit $ Text.pack "=" - , fieldDoc - ] + $ fds <&> \case + (fieldName, Just fieldDoc) -> docSeq + [ appSep $ docLit $ fieldName + , appSep $ docLit $ Text.pack "=" + , fieldDoc + ] + (fieldName, Nothing) -> docLit fieldName + , docSeparator , docLit $ Text.pack "}" ] TuplePat args boxity _ -> do