stylish-haskell 0.15.0.1 → 0.15.1.0
raw patch · 14 files changed
+52/−46 lines, 14 filesdep ~basedep ~ghcdep ~ghc-lib-parser
Dependency ranges changed: base, ghc, ghc-lib-parser, ghc-lib-parser-ex
Files
- CHANGELOG +3/−0
- lib/Language/Haskell/Stylish/Comments.hs +1/−1
- lib/Language/Haskell/Stylish/Config/Cabal.hs +1/−1
- lib/Language/Haskell/Stylish/GHC.hs +1/−1
- lib/Language/Haskell/Stylish/Module.hs +1/−1
- lib/Language/Haskell/Stylish/Printer.hs +11/−9
- lib/Language/Haskell/Stylish/Step/Data.hs +2/−0
- lib/Language/Haskell/Stylish/Step/Imports.hs +1/−1
- lib/Language/Haskell/Stylish/Step/LanguagePragmas.hs +2/−2
- lib/Language/Haskell/Stylish/Step/ModuleHeader.hs +8/−8
- lib/Language/Haskell/Stylish/Step/SimpleAlign.hs +2/−2
- lib/Language/Haskell/Stylish/Step/Squash.hs +11/−12
- lib/Language/Haskell/Stylish/Step/UnicodeSyntax.hs +2/−2
- stylish-haskell.cabal +6/−6
CHANGELOG view
@@ -1,5 +1,8 @@ # CHANGELOG +- 0.15.1.0 (2025-04-13)+ * #491 Support GHC 9.12 (By GuillaumedeVolpiano)+ - 0.15.0.1 (2025-04-13) * #493 Support Cabal 3.12 again (By GuillaumedeVolpiano)
lib/Language/Haskell/Stylish/Comments.hs view
@@ -61,7 +61,7 @@ commentsWithLines :: [(LineBlock, GHC.LEpaComment)] commentsWithLines = do comment <- allComments- let s = GHC.anchor $ GHC.getLoc comment+ let s = GHC.epaLocationRealSrcSpan $ GHC.getLoc comment pure (realSrcSpanToLineBlock s, comment) work
lib/Language/Haskell/Stylish/Config/Cabal.hs view
@@ -53,7 +53,7 @@ go searched (p : ps) = do #if MIN_VERSION_Cabal(3,14,0)- let projectRoot = Just $ makeSymbolicPath p+ let projectRoot = Just $ Cabal.makeSymbolicPath p potentialCabalFile <- Cabal.findPackageDesc projectRoot #else potentialCabalFile <- Cabal.findPackageDesc p
lib/Language/Haskell/Stylish/GHC.hs view
@@ -86,6 +86,6 @@ deepAnnComments = everything (++) (mkQ [] priorAndFollowing) priorAndFollowing :: GHC.EpAnnComments -> [GHC.LEpaComment]-priorAndFollowing = sortOn (GHC.anchor . GHC.getLoc) . \case+priorAndFollowing = sortOn (GHC.epaLocationRealSrcSpan . GHC.getLoc) . \case GHC.EpaComments {..} -> priorComments GHC.EpaCommentsBalanced {..} -> priorComments ++ followingComments
lib/Language/Haskell/Stylish/Module.hs view
@@ -141,7 +141,7 @@ prag comment = case GHC.ac_tok (GHC.unLoc comment) of GHC.EpaBlockComment str | lang : p1 : ps <- tokenize str, map toLower lang == "language" ->- pure (GHC.anchor (GHC.getLoc comment), p1 :| ps)+ pure (GHC.epaLocationRealSrcSpan (GHC.getLoc comment), p1 :| ps) _ -> Nothing tokenize = words .
lib/Language/Haskell/Stylish/Printer.hs view
@@ -53,6 +53,7 @@ import GHC.Types.Name.Reader (RdrName (..)) import GHC.Types.SrcLoc (GenLocated (..)) import qualified GHC.Types.SrcLoc as GHC+import GHC.TypeLits (symbolVal) import GHC.Utils.Outputable (Outputable) --------------------------------------------------------------------------------@@ -160,18 +161,19 @@ nameAnnAdornment :: GHC.NameAnn -> (String, String) nameAnnAdornment = \case- GHC.NameAnn {..} -> fromAdornment nann_adornment- GHC.NameAnnCommas {..} -> fromAdornment nann_adornment- GHC.NameAnnBars {..} -> fromAdornment nann_adornment- GHC.NameAnnOnly {..} -> fromAdornment nann_adornment+ GHC.NameAnn {GHC.nann_adornment = na} -> fromAdornment na+ GHC.NameAnnCommas {GHC.nann_adornment = na} -> fromAdornment na+ GHC.NameAnnBars {GHC.nann_parensh = (o, c)} -> fromAdornment (GHC.NameParensHash o c)+ GHC.NameAnnOnly {GHC.nann_adornment = na} -> fromAdornment na GHC.NameAnnRArrow {} -> (mempty, mempty) GHC.NameAnnQuote {} -> ("'", mempty) GHC.NameAnnTrailing {} -> (mempty, mempty) where- fromAdornment GHC.NameParens = ("(", ")")- fromAdornment GHC.NameBackquotes = ("`", "`")- fromAdornment GHC.NameParensHash = ("#(", "#)")- fromAdornment GHC.NameSquare = ("[", "]")+ fromAdornment (GHC.NameParens l r) = (symbolVal l, symbolVal r)+ fromAdornment (GHC.NameBackquotes l r) = (symbolVal l, symbolVal r)+ fromAdornment (GHC.NameParensHash l r) = (symbolVal l, symbolVal r)+ fromAdornment (GHC.NameSquare l r) = (symbolVal l, symbolVal r)+ fromAdornment GHC.NameNoAdornment = (mempty, mempty) -- | Print module name putModuleName :: GHC.ModuleName -> P ()@@ -197,7 +199,7 @@ (comma >> space) (fmap putType xs) putText "]"- GHC.HsExplicitTupleTy _ xs -> do+ GHC.HsExplicitTupleTy _ _ xs -> do putText "'(" sep (comma >> space)
lib/Language/Haskell/Stylish/Step/Data.hs view
@@ -103,6 +103,8 @@ isAfterStart :: GHC.LEpaComment -> Bool isAfterStart (GHC.L (GHC.EpaSpan (GHC.RealSrcSpan commentSpan _)) _) = GHC.srcSpanStartLine commentSpan >= GHC.srcSpanStartLine declSpan+ isAfterStart (GHC.L (GHC.EpaDelta (GHC.RealSrcSpan commentSpan _) _ _) _) =+ GHC.srcSpanStartLine commentSpan >= GHC.srcSpanStartLine declSpan isAfterStart _ = False dataDecls :: Module -> [DataDecl]
lib/Language/Haskell/Stylish/Step/Imports.hs view
@@ -638,7 +638,7 @@ prepareInner :: GHC.IE GHC.GhcPs -> GHC.IE GHC.GhcPs prepareInner = \case -- Simplify `A ()` to `A`.- GHC.IEThingWith x n GHC.NoIEWildcard [] md -> GHC.IEThingAbs x n md+ GHC.IEThingWith x n GHC.NoIEWildcard [] md -> GHC.IEThingAbs (fst x) n md GHC.IEThingWith x n w ns md -> GHC.IEThingWith x n w (sortBy (compareWrappedName `on` GHC.unLoc) ns) md ie -> ie
lib/Language/Haskell/Stylish/Step/LanguagePragmas.hs view
@@ -198,5 +198,5 @@ getMatchStrict :: GHC.Match GHC.GhcPs (GHC.LHsExpr GHC.GhcPs) -> [()] getMatchStrict (GHC.Match _ ctx _ _) = case ctx of- GHC.FunRhs _ _ GHC.SrcStrict -> [()]- _ -> []+ GHC.FunRhs _ _ GHC.SrcStrict _ -> [()]+ _ -> []
lib/Language/Haskell/Stylish/Step/ModuleHeader.hs view
@@ -81,18 +81,18 @@ loc <- GHC.getLocA <$> GHC.hsmodExports modul GHC.srcSpanEndLine <$> GHC.srcSpanToRealSrcSpan loc) - keywordLine kw = listToMaybe $ do+ keywordLine kw = do GHC.EpAnn {..} <- pure $ GHC.hsmodAnn $ GHC.hsmodExt modul- GHC.AddEpAnn kw' (GHC.EpaSpan (GHC.RealSrcSpan s _)) <- GHC.am_main anns- guard $ kw == kw'- pure $ GHC.srcSpanEndLine s+ case kw anns of+ GHC.EpTok (GHC.EpaSpan (GHC.RealSrcSpan s _)) -> Just . GHC.srcSpanEndLine $ s+ _ -> Nothing - moduleLine = keywordLine GHC.AnnModule- whereLine = keywordLine GHC.AnnWhere+ moduleLine = keywordLine GHC.am_mod+ whereLine = keywordLine GHC.am_where commentOnLine l = listToMaybe $ do comment <- epAnnComments $ GHC.hsmodAnn $ GHC.hsmodExt modul- guard $ GHC.srcSpanStartLine (GHC.anchor $ GHC.getLoc comment) == l+ guard $ GHC.srcSpanStartLine (GHC.epaLocationRealSrcSpan $ GHC.getLoc comment) == l pure comment moduleComment = moduleLine >>= commentOnLine@@ -152,7 +152,7 @@ attachModuleComment Single | [egroup] <- exports , not (commentGroupHasComments egroup)- , [(export, _)] <- (cgItems egroup) -> do+ , [(export, _)] <- cgItems egroup -> do printSingleLineExportList conf [export] attachModuleComment Inline | [] <- exports -> do
lib/Language/Haskell/Stylish/Step/SimpleAlign.hs view
@@ -112,7 +112,7 @@ matchToAlignable :: GHC.LocatedA (Hs.Match Hs.GhcPs (Hs.LHsExpr Hs.GhcPs)) -> Maybe (Either (Alignable GHC.RealSrcSpan) (Alignable GHC.RealSrcSpan))-matchToAlignable (GHC.L matchLoc m@(Hs.Match _ Hs.CaseAlt pats@(_ : _) grhss)) = do+matchToAlignable (GHC.L matchLoc m@(Hs.Match _ Hs.CaseAlt (GHC.L _ pats@(_ : _)) grhss)) = do let patsLocs = map GHC.getLocA pats pat = last patsLocs guards = getGuards m@@ -128,7 +128,7 @@ , aRight = rightPos , aRightLead = length "-> " }-matchToAlignable (GHC.L matchLoc (Hs.Match _ (Hs.FunRhs name _ _) pats@(_ : _) grhss)) = do+matchToAlignable (GHC.L matchLoc (Hs.Match _ (Hs.FunRhs name _ _ _) (GHC.L _ pats@(_ : _)) grhss)) = do body <- unguardedRhsBody grhss let patsLocs = map GHC.getLocA pats nameLoc = GHC.getLocA name
lib/Language/Haskell/Stylish/Step/Squash.hs view
@@ -1,4 +1,5 @@ --------------------------------------------------------------------------------+{-# LANGUAGE DataKinds #-} {-# LANGUAGE PartialTypeSignatures #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE RecordWildCards #-}@@ -9,7 +10,6 @@ ---------------------------------------------------------------------------------import Data.Maybe (listToMaybe) import qualified GHC.Hs as GHC import qualified GHC.Types.SrcLoc as GHC @@ -45,10 +45,9 @@ ---------------------------------------------------------------------------------fieldDeclSeparator :: [GHC.AddEpAnn]-> Maybe GHC.RealSrcSpan-fieldDeclSeparator anns = listToMaybe $ do- GHC.AddEpAnn GHC.AnnDcolon (GHC.EpaSpan (GHC.RealSrcSpan s _)) <- anns- pure s+fieldDeclSeparator :: GHC.EpUniToken "::" "\8759" -> Maybe GHC.RealSrcSpan+fieldDeclSeparator (GHC.EpUniTok (GHC.EpaSpan (GHC.RealSrcSpan s _)) _) = Just s+fieldDeclSeparator _ = Nothing --------------------------------------------------------------------------------@@ -65,23 +64,23 @@ where match = GHC.unLoc lmatch mbLeft = case match of- GHC.Match _ (GHC.FunRhs name _ _) [] _ ->+ GHC.Match _ (GHC.FunRhs name _ _ _ ) (GHC.L _ []) _ -> GHC.srcSpanToRealSrcSpan $ GHC.getLocA name- GHC.Match _ _ pats@(_ : _) _ ->+ GHC.Match _ _ (GHC.L _ pats@(_ : _)) _ -> GHC.srcSpanToRealSrcSpan . GHC.getLocA $ last pats _ -> Nothing -------------------------------------------------------------------------------- matchSeparator :: GHC.EpAnn GHC.GrhsAnn -> Maybe GHC.RealSrcSpan-matchSeparator GHC.EpAnn {..}- | GHC.AddEpAnn _ (GHC.EpaSpan (GHC.RealSrcSpan s _)) <- GHC.ga_sep anns = Just s-matchSeparator _ = Nothing-+matchSeparator GHC.EpAnn {..} = case GHC.ga_sep anns of+ Left (GHC.EpTok (GHC.EpaSpan (GHC.RealSrcSpan s _))) -> Just s+ Right (GHC.EpUniTok (GHC.EpaSpan (GHC.RealSrcSpan s _)) _) -> Just s+ _ -> Nothing -------------------------------------------------------------------------------- step :: Step-step = makeStep "Squash" $ \ls (module') ->+step = makeStep "Squash" $ \ls module' -> let changes = foldMap squashFieldDecl (everything module') <> foldMap squashMatch (everything module') in
lib/Language/Haskell/Stylish/Step/UnicodeSyntax.hs view
@@ -24,7 +24,7 @@ Editor.replaceRealSrcSpan (GHC.epaLocationRealSrcSpan epaLoc) "→" hsTyReplacements (GHC.HsQualTy _ ctx _) | Just arrow <- GHC.ac_darrow . GHC.anns $ GHC.getLoc ctx- , (GHC.NormalSyntax, GHC.EpaSpan (GHC.RealSrcSpan loc _)) <- arrow =+ , (GHC.EpUniTok (GHC.EpaSpan (GHC.RealSrcSpan loc _)) GHC.NormalSyntax) <- arrow = Editor.replaceRealSrcSpan loc "⇒" hsTyReplacements _ = mempty @@ -32,7 +32,7 @@ -------------------------------------------------------------------------------- hsSigReplacements :: GHC.Sig GHC.GhcPs -> Editor.Edits hsSigReplacements (GHC.TypeSig ann _ _)- | GHC.AddEpAnn GHC.AnnDcolon epaLoc <- GHC.asDcolon ann+ | GHC.EpUniTok epaLoc _ <- GHC.asDcolon ann , GHC.EpaSpan (GHC.RealSrcSpan loc _) <- epaLoc = Editor.replaceRealSrcSpan loc "∷" hsSigReplacements _ = mempty
stylish-haskell.cabal view
@@ -1,6 +1,6 @@ Cabal-version: 2.4 Name: stylish-haskell-Version: 0.15.0.1+Version: 0.15.1.0 Synopsis: Haskell code prettifier Homepage: https://github.com/haskell/stylish-haskell License: BSD-3-Clause@@ -37,7 +37,7 @@ Build-depends: aeson >= 0.6 && < 2.3,- base >= 4.8 && < 5,+ base >= 4.19 && < 5, bytestring >= 0.9 && < 0.13, Cabal >= 3.10 && < 4.0, containers >= 0.3 && < 0.9,@@ -59,17 +59,17 @@ -- and we have a new enough GHC. Note that -- this will only work if the user's -- compiler is of the matching major version!- if !flag(ghc-lib) && impl(ghc >= 9.8) && impl(ghc < 9.11)+ if !flag(ghc-lib) && impl(ghc >= 9.8) && impl(ghc < 9.13) Build-depends:- ghc >= 9.10 && < 9.11,+ ghc >= 9.12 && < 9.13, ghc-boot, ghc-boot-th else Build-depends:- ghc-lib-parser >= 9.10 && < 9.11+ ghc-lib-parser >= 9.12 && < 9.13 Build-depends:- ghc-lib-parser-ex >= 9.10 && < 9.11+ ghc-lib-parser-ex >= 9.12 && < 9.13 Library Import: depends