packages feed

floskell 0.10.0 → 0.10.1

raw patch · 6 files changed

+45/−13 lines, 6 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.AlignConfig
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.Config
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.DeclarationConstruct
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.GroupConfig
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.ImportsGroup
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.ImportsGroupOrder
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.Indent
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.IndentConfig
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.Layout
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.LayoutConfig
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.LayoutContext
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.OpConfig
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.OptionConfig
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.PenaltyConfig
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.SortImportsRule
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.Whitespace
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.Config.WsLoc
- Floskell.Config: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Floskell.Config.ConfigMap a)
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.AlignConfig
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.Config
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.DeclarationConstruct
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.GroupConfig
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.ImportsGroup
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.ImportsGroupOrder
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.Indent
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.IndentConfig
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.Layout
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.LayoutConfig
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.LayoutContext
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.OpConfig
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.OptionConfig
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.PenaltyConfig
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.SortImportsRule
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.Whitespace
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.Config.WsLoc
- Floskell.Config: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Floskell.Config.ConfigMap a)
- Floskell.ConfigFile: instance Data.Aeson.Types.FromJSON.FromJSON Floskell.ConfigFile.AppConfig
- Floskell.ConfigFile: instance Data.Aeson.Types.ToJSON.ToJSON Floskell.ConfigFile.AppConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.AlignConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.Config
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.DeclarationConstruct
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.GroupConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.ImportsGroup
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.ImportsGroupOrder
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.Indent
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.IndentConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.Layout
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.LayoutConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.LayoutContext
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.OpConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.OptionConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.PenaltyConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.SortImportsRule
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.Whitespace
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON Floskell.Config.WsLoc
+ Floskell.Config: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Floskell.Config.ConfigMap a)
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.AlignConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.Config
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.DeclarationConstruct
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.GroupConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.ImportsGroup
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.ImportsGroupOrder
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.Indent
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.IndentConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.Layout
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.LayoutConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.LayoutContext
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.OpConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.OptionConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.PenaltyConfig
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.SortImportsRule
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.Whitespace
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON Floskell.Config.WsLoc
+ Floskell.Config: instance Data.Aeson.Types.Class.ToJSON a => Data.Aeson.Types.Class.ToJSON (Floskell.Config.ConfigMap a)
+ Floskell.ConfigFile: instance Data.Aeson.Types.Class.FromJSON Floskell.ConfigFile.AppConfig
+ Floskell.ConfigFile: instance Data.Aeson.Types.Class.ToJSON Floskell.ConfigFile.AppConfig

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+# Floskell 0.10.1 (2019-05-25)++* Fix for broken off-side rule with multi-line lists+* Fix for increasing comment indentation before instance declarations+ # Floskell 0.10.0 (2019-05-03)  * Updated to haskell-src-exts-1.21.0, with support for `DerivingVia` and `TypeInType`
TEST.md view
@@ -773,6 +773,18 @@     else that ``` +Lists must not suppress onside.++``` haskell+foo = case x of+  [ y -- comment+    , z] -> bar++foo = do+  [ x -- comment+    , y ]+```+ ## Comments  Don't be too eager in assigning comments to the following AST node.@@ -795,6 +807,18 @@                 -- comments -- block -- two+```++... even when haskell-src-exts has weird column span info.++``` haskell+module Main where++-- comment+instance Foo Bar where+  foo = undefined++bar = undefined ```  Only comments.
floskell.cabal view
@@ -1,5 +1,5 @@ name:                floskell-version:             0.10.0+version:             0.10.1 synopsis:            A flexible Haskell source code pretty printer description:         A flexible Haskell source code pretty printer.                      .
src/Floskell/Pretty.hs view
@@ -146,7 +146,7 @@ printComment :: Int -> Comment -> Printer () printComment correction Comment{..} = do     col <- getNextColumn-    let padding = max 0 $ srcSpanStartColumn commentSpan + correction - col+    let padding = max 0 $ srcSpanStartColumn commentSpan + correction - col - 1     case commentType of         PreprocessorDirective -> do             nl <- gets psNewline@@ -186,7 +186,10 @@     when (loc == After && not nl && notSameLine firstComment) newline      col <- getNextColumn-    forM_ comments $ printComment (col - srcSpanEndColumn ssi)+    let correction = case loc of+            Before -> col - srcSpanStartColumn ssi + 1+            After -> col - srcSpanEndColumn ssi + 1+    forM_ comments $ printComment correction      -- Write newline before restoring onside indent.     eol <- gets psEolComment@@ -282,11 +285,13 @@             printComments' Before x             cut . onside $ prettyPrint x             printComments After x-            forM_ xs' $ \x' -> do-                printComments Before x'-                column sepCol $ operatorV ctx sep-                cut . onside $ prettyPrint x'-                printComments After x'+        -- `column sepCol` must not be within `column itemCol`, or the+        -- former can suppress onside for the latter.+        forM_ xs' $ \x' -> do+            column itemCol $ printComments Before x'+            column sepCol $ operatorV ctx sep+            column itemCol $ cut . onside $ prettyPrint x'+            column itemCol $ printComments After x'  listH :: (Annotated ast, Pretty ast)       => LayoutContext@@ -635,7 +640,7 @@      vertical = do         pretty fn-        withIndent cfgIndentApp $ linedOnside args+        withIndent cfgIndentApp $ lined args  prettyInfixApp     :: (Annotated ast, Pretty ast, Annotated op, HSE.Pretty (op NodeInfo))
src/Floskell/Printers.hs view
@@ -295,9 +295,7 @@ aligned :: Printer a -> Printer a aligned p = do     col <- getNextColumn-    column col $ do-        modify $ \s -> s { psOnside = 0 }-        p+    column col p  indented :: Printer a -> Printer a indented p = do
stack.yaml view
@@ -1,4 +1,4 @@-resolver: lts-13.6+resolver: lts-13.22 packages: - '.' extra-deps: