From b6da307ecce938e0dd6b3ad16479d82094207806 Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Mon, 26 Jun 2023 15:59:17 +0200 Subject: [PATCH] Stop using single-line layout for records defs with comms --- data/10-structured/data-type-decl.blt | 10 +++++++++- .../Haskell/Brittany/Internal/ToBriDoc/DataDecl.hs | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/data/10-structured/data-type-decl.blt b/data/10-structured/data-type-decl.blt index f4d9a84..ec1fe66 100644 --- a/data/10-structured/data-type-decl.blt +++ b/data/10-structured/data-type-decl.blt @@ -61,7 +61,6 @@ data } #test record single line layout -#pending config flag is disabled for now {-# LANGUAGE ScopedTypeVariables #-} -- brittany { lconfig_allowSinglelineRecord: true } data MyRecord = forall a . Show a => MyCons { foo :: a -> a, i :: Int } @@ -73,6 +72,15 @@ data MyRecord = forall a . Show a => Bar { foo :: abittoolongbutnotvery -> abittoolongbutnotvery } +#test avoid single-line record if there are comments +-- brittany { lconfig_allowSinglelineRecord: true } +data MyRecord = MyRecord + { a :: Int + -- ^ comment 1 + , b :: Int + -- ^ comment 2 + } + #test record forall constraint multiline {-# LANGUAGE ScopedTypeVariables #-} data MyRecord diff --git a/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/DataDecl.hs b/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/DataDecl.hs index 5cc4584..dd45e62 100644 --- a/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/DataDecl.hs +++ b/source/library/Language/Haskell/Brittany/Internal/ToBriDoc/DataDecl.hs @@ -455,7 +455,9 @@ createDetailsDoc consNameStr details = case details of let ((fName1, fType1), fDocR) = case mkFieldDocs fields of (doc1:docR) -> (doc1, docR) _ -> error "cannot happen (TM)" - allowSingleline <- mAsk <&> _conf_layout .> _lconfig_allowSinglelineRecord .> confUnpack + allowSingleline <- do + allowViaConf <- mAsk <&> _conf_layout .> _lconfig_allowSinglelineRecord .> confUnpack + pure (allowViaConf && not (hasAnyCommentsBelow epAnn)) docAddBaseY BrIndentRegular $ runFilteredAlternative $ do -- single-line: { i :: Int, b :: Bool } addAlternativeCond allowSingleline $ docSeq