summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorAlan Zimmerman <alan.zimm@gmail.com>2023-04-25 23:24:27 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-04-26 14:52:05 -0400
commit052e2bb629abc97b394b9de2394eb36cbed9385f (patch)
tree3ae7f17afa7de56fbdfd0ee2aa8af3fbb3a23811 /utils
parent77f506b888624b4fd30205fb8512f39435055a27 (diff)
downloadhaskell-052e2bb629abc97b394b9de2394eb36cbed9385f.tar.gz
EPA: Use ExplicitBraces only in HsModule
!9018 brought in exact print annotations in LayoutInfo for open and close braces at the top level. But it retained them in the HsModule annotations too. Remove the originals, so exact printing uses LayoutInfo
Diffstat (limited to 'utils')
-rw-r--r--utils/check-exact/ExactPrint.hs43
-rw-r--r--utils/check-exact/Parsers.hs11
2 files changed, 21 insertions, 33 deletions
diff --git a/utils/check-exact/ExactPrint.hs b/utils/check-exact/ExactPrint.hs
index 04d0b831e6..5db255f765 100644
--- a/utils/check-exact/ExactPrint.hs
+++ b/utils/check-exact/ExactPrint.hs
@@ -1203,24 +1203,6 @@ markAnnListA reallyTrail an action = do
debugM $ "markAnnListA: an5=" ++ showAst an
return (an5, r)
-
-markAnnList' :: (Monad m, Monoid w)
- => Bool -> EpAnn AnnList -> EP w m a -> EP w m (EpAnn AnnList, a)
-markAnnList' reallyTrail an action = do
- p <- getPosP
- debugM $ "markAnnList : " ++ showPprUnsafe (p, an)
- an0 <- markLensMAA an lal_open
- an1 <- if (not reallyTrail)
- then markTrailingL an0 lal_trailing
- else return an0
- an2 <- markEpAnnAllL an1 lal_rest AnnSemi
- r <- action
- an3 <- markLensMAA an2 lal_close
- an4 <- if reallyTrail
- then markTrailingL an3 lal_trailing
- else return an3
- return (an4, r)
-
-- ---------------------------------------------------------------------
printComments :: (Monad m, Monoid w) => RealSrcSpan -> EP w m ()
@@ -1387,14 +1369,21 @@ instance ExactPrint (HsModule GhcPs) where
return (an1, Just m', mdeprec', mexports')
- let ann_decls = EpAnn (entry an) (am_decls $ anns an0) emptyComments
- (ann_decls', (decls', imports')) <- markAnnList' False ann_decls $ do
- imports' <- markTopLevelList imports
- decls' <- markTopLevelList decls
- return (decls', imports')
- let am_decls' = case ann_decls' of
- EpAnnNotUsed -> (am_decls $ anns an0)
- EpAnn _ r _ -> r
+ lo0 <- case lo of
+ ExplicitBraces open close -> do
+ open' <- markToken open
+ return (ExplicitBraces open' close)
+ _ -> return lo
+
+ am_decls' <- markTrailing (am_decls $ anns an0)
+ imports' <- markTopLevelList imports
+ decls' <- markTopLevelList decls
+
+ lo1 <- case lo0 of
+ ExplicitBraces open close -> do
+ close' <- markToken close
+ return (ExplicitBraces open close')
+ _ -> return lo
-- Print EOF
case am_eof $ anns an of
@@ -1406,7 +1395,7 @@ instance ExactPrint (HsModule GhcPs) where
let anf = an0 { anns = (anns an0) { am_decls = am_decls' }}
debugM $ "HsModule, anf=" ++ showAst anf
- return (HsModule (XModulePs anf lo mdeprec' mbDoc') mmn' mexports' imports' decls')
+ return (HsModule (XModulePs anf lo1 mdeprec' mbDoc') mmn' mexports' imports' decls')
-- ---------------------------------------------------------------------
diff --git a/utils/check-exact/Parsers.hs b/utils/check-exact/Parsers.hs
index 8bcc26a90d..2eadcacab9 100644
--- a/utils/check-exact/Parsers.hs
+++ b/utils/check-exact/Parsers.hs
@@ -276,16 +276,15 @@ fixModuleTrailingComments :: GHC.ParsedSource -> GHC.ParsedSource
fixModuleTrailingComments (GHC.L l p) = GHC.L l p'
where
an' = case GHC.hsmodAnn $ GHC.hsmodExt p of
- (GHC.EpAnn a an ocs) -> GHC.EpAnn a an (rebalance (GHC.am_decls an) ocs)
+ (GHC.EpAnn a an ocs) -> GHC.EpAnn a an (rebalance ocs)
unused -> unused
p' = p { GHC.hsmodExt = (GHC.hsmodExt p){ GHC.hsmodAnn = an' } }
- -- p' = error $ "fixModuleTrailingComments: an'=" ++ showAst an'
- rebalance :: GHC.AnnList -> GHC.EpAnnComments -> GHC.EpAnnComments
- rebalance al cs = cs'
+ rebalance :: GHC.EpAnnComments -> GHC.EpAnnComments
+ rebalance cs = cs'
where
- cs' = case GHC.al_close al of
- Just (GHC.AddEpAnn _ (GHC.EpaSpan ss _)) ->
+ cs' = case GHC.hsmodLayout $ GHC.hsmodExt p of
+ GHC.ExplicitBraces _ (GHC.L (GHC.TokenLoc (GHC.EpaSpan ss _)) _) ->
let
pc = GHC.priorComments cs
fc = GHC.getFollowingComments cs