From e70571f701041e976e7a8c22dd416a7f9f5ef4f0 Mon Sep 17 00:00:00 2001 From: Lev Dvorkin Date: Sun, 6 Nov 2022 18:18:36 +0300 Subject: [PATCH 1/2] Failing test added --- .../Haskell/Stylish/Step/Data/Tests.hs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/Language/Haskell/Stylish/Step/Data/Tests.hs b/tests/Language/Haskell/Stylish/Step/Data/Tests.hs index 62be7a79..9d67f808 100644 --- a/tests/Language/Haskell/Stylish/Step/Data/Tests.hs +++ b/tests/Language/Haskell/Stylish/Step/Data/Tests.hs @@ -79,6 +79,7 @@ tests = testGroup "Language.Haskell.Stylish.Step.Data.Tests" , testCase "case 64" case64 , testCase "case 65" case65 , testCase "case 66 (issue #411)" case66 + , testCase "case 67 (issue #425)" case67 ] case00 :: Assertion @@ -1381,6 +1382,24 @@ case66 = assertSnippet (step indentIndentStyle) input input , " deriving (Eq, Show)" ] +-- | Inline comment after the last record field +-- +-- Regression test for https://github.com/haskell/stylish-haskell/issues/425 +case67 :: Assertion +case67 = assertSnippet (step indentIndentStyle) input input + where + input = + [ "data Foo" + , " = Foo -- ^ foo" + , " | Bar -- ^ bar" + , " | Baz -- ^ baz" + , "" + , "data Foo'" + , " = Foo' Int -- ^ foo" + , " | Bar' Int -- ^ bar" + , " | Baz' Int -- ^ baz" + ] + sameSameStyle :: Config sameSameStyle = Config SameLine SameLine 2 2 False True SameLine False True NoMaxColumns From 315ddbffacbfe3ebe2e54e8d1e6e5c218284324c Mon Sep 17 00:00:00 2001 From: Lev Dvorkin Date: Sun, 6 Nov 2022 23:21:09 +0300 Subject: [PATCH 2/2] Issue solved in a not fine way --- lib/Language/Haskell/Stylish/Step/Data.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Language/Haskell/Stylish/Step/Data.hs b/lib/Language/Haskell/Stylish/Step/Data.hs index 4da96fbb..20bdd478 100644 --- a/lib/Language/Haskell/Stylish/Step/Data.hs +++ b/lib/Language/Haskell/Stylish/Step/Data.hs @@ -97,9 +97,10 @@ step cfg = makeStep "Data" \ls m -> Editor.apply (changes m) ls ldecl <- GHC.hsmodDecls $ GHC.unLoc m GHC.TyClD _ tycld <- pure $ GHC.unLoc ldecl loc <- maybeToList $ GHC.srcSpanToRealSrcSpan $ GHC.getLocA ldecl + let lastInlineComment = GHC.ann $ GHC.getLoc ldecl case tycld of GHC.DataDecl {..} -> pure $ MkDataDecl - { dataComments = epAnnComments tcdDExt + { dataComments = epAnnComments lastInlineComment <> epAnnComments tcdDExt , dataLoc = loc , dataDeclName = tcdLName , dataTypeVars = tcdTyVars