summaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Language/Haskell/Stylish/Step/Data.hs10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Language/Haskell/Stylish/Step/Data.hs b/lib/Language/Haskell/Stylish/Step/Data.hs
index 94aaf22..681c7c8 100644
--- a/lib/Language/Haskell/Stylish/Step/Data.hs
+++ b/lib/Language/Haskell/Stylish/Step/Data.hs
@@ -45,9 +45,15 @@ commentsWithin lb = filter within
changeDecl :: [Comment] -> Int -> H.Decl LineBlock -> Maybe ChangeLine
changeDecl _ _ (H.DataDecl _ (H.DataType _) Nothing _ [] _) = Nothing
-changeDecl allComments indentSize (H.DataDecl block (H.DataType _) Nothing dhead decls derivings) =
- Just $ change block (const $ concat newLines)
+changeDecl allComments indentSize (H.DataDecl block (H.DataType _) Nothing dhead decls derivings)
+ | hasRecordFields = Just $ change block (const $ concat newLines)
+ | otherwise = Nothing
where
+ hasRecordFields = any
+ (\qual -> case qual of
+ (H.QualConDecl _ _ _ (H.RecDecl {})) -> True
+ _ -> False)
+ decls
newLines = fmap constructors zipped ++ [fmap (indented . H.prettyPrint) derivings]
zipped = zip decls ([1..] ::[Int])
constructors (decl, 1) = processConstructor allComments typeConstructor indentSize decl