Alan Zimmerman pushed to branch wip/az/exactprint-annotation-rationalisation at Glasgow Haskell Compiler / GHC Commits: ced53ce6 by mangoiv at 2026-08-29T07:15:24-04:00 nightlies: output yaml to file only Previously we would just output the metadata to stdout which risks that it's clobbered by incidental debugt output. We now output to file only. Fixes #27511 - - - - - 578bd185 by Andreas Klebinger at 2026-08-29T07:16:05-04:00 Specialise: Stop looping on recursive dictionaries in interestingDict interestingDict now doesn't look through loopbreaker unfoldings. Doing so would cause infinite loops on certain dictionaries. Fixes #27705. - - - - - ee1c879e by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA Fix HsCmdDo exact print with comments Exact printing of HsCmdDo was ignoring the location for the do statements, and this is an annotation that can have comments in it. Update it so we print the statements as a unit, including any comments. Also add the result of auditing that we capture comments in all needed places, noting that the remaining Anno SrcSpan instances are benign. - - - - - a7e63b70 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Remove ListBanana / ListParens from AnnListBrackets - - - - - 09450f69 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Tidy up mkHsDoPv, take AnnList directly And some extra stuff by accident. The main goal is to slim down AnnListBrackets to just have braces or none. This makes it clear that it serves only for lists which may have layout, and opens the route to use EpLayout instead of AnnListBrackets - - - - - a806ecc3 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Add specific layout field to AnnList - - - - - 6e3e4d18 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Use EpaLocation in EpVirtualBraces reword: EPA Use vocurly as basis for AnnListLayout For the existing cases that populate AnnList. This also shows up AnnList usages that can never capture layout. - - - - - 2bc76402 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Use vocurly as basis for AnnListLayout For the existing cases that populate AnnList. This also shows up AnnList usages that can never capture layout. - - - - - aba3c05c by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: AnnList clean up patch for empty where clause - - - - - ff7a28af by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Add TTG fields to FamilyInfo This commit is a simple add, with unused extension fields. It lays the groundwork for using them for exact print annotations - - - - - ddaf1532 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 WIP annclassdecl - - - - - 003d3b3f by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Update AnnClsInstDecl to contain AnnList It was already separately tracking the '{', '}' and leading ';' values. This aligns it with layout-introducing parser productions ('vocurly'), so the layout processing can be handled uniformly - - - - - bcc5194e by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Tidy up markAnnListA' It takes an action which can modify the AnnList, but this is never used. So remove it. - - - - - d1982191 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Use AnnList for GADT declarations - - - - - 69ccfd17 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Use AnnList in AnnClassDecl - - - - - 42fc4aff by Alan Zimmerman at 2026-08-31T12:31:49+01:00 MOVE EPA: Plan for Fixing AnnList Layout Properly - - - - - 19a93eef by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Make local binds located Use LHsLocalBinds instead of HsLocalBinds This reverses an earlier change, and brings processing of local binds into alignement with the exact printing principle that the LocatedA contents provide the location and extent of the enclosed item, together with any comments or context-specific trailing items like commas or semi colons. The internal TTG extension points only carry exact print annotations related to printing the item within its bounds. This change brings back the problem of EmptyLocalBinds, which by definition cannot have a location. These get a noSrcSpan location, which is ignored in the exact printing process. - - - - - c4deb16e by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Use AnnList in HsMultiIf It introduces layout, capture it - - - - - de1a0a14 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Use AnnList in DecBrl - - - - - d4064c5f by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Replace AnnListLayout / AnnListBrackets with EpLayout - - - - - ca027dcf by Alan Zimmerman at 2026-08-31T12:31:49+01:00 WIP: setLayoutBoth inside markAnnListA Current problem is it is a global one-shot, and MG has one too Check: is it needed? if so, honouring EpLayout may be needed - - - - - 4f290a65 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA some tests for layout. WIP - - - - - 0065f850 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 Exactprint layout scope plan. Do not commit - - - - - f12812b8 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: tidy up a bit. Combine somewhere else - - - - - ff71cdc3 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Introduce LayoutFrame stacks in ExactPrint state - - - - - 8abf2d58 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 Align with ghc-exactprint - - - - - 9a66fc37 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Fix AnnList leading semis when layout When there is layout, anything printed triggers it, including leading semis. Add some test case examples too - - - - - 0b2f376b by Alan Zimmerman at 2026-08-31T12:31:49+01:00 Exactprint: tidy up layout capturing - - - - - d70a4bd9 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: add makeDelta test for Test20297 The original #20297 related to comment placement for exact printing after running ExactPrint.makeDelta on ParsedSource. Add an additional test that explicitly tests this. - - - - - 94464526 by Alan Zimmerman at 2026-08-31T12:31:49+01:00 EPA: Make ValBinds LocatedA in HsLocalBindsLR If we have items with an AnnList Annotation, as part of another, which has different content, it must be LocatedA. This is a technical requirement due to the way comment allocation happens during the makeDelta processing. Comments are queued for printing, and as soon as any non-comment is to be printed, the pending comments before that position are printed, and in makeDelta processing these attached as preceding comments to the thing just printed. The means they end up captured inside the layout region of the AnnList item. So for foo = x where -- comment x = 3 the comment ends up as a preceding comment of `x = 3`, inside the layout, and prints as foo = x where -- comment x = 3 - - - - - bdab2e7c by Alan Zimmerman at 2026-08-31T13:19:40+01:00 EPA: Make IPBinds LocatedA - - - - - 7765e5e6 by Alan Zimmerman at 2026-08-31T13:24:40+01:00 Extend Test20297 for additional occurrences - - - - - 1f42a027 by Alan Zimmerman at 2026-08-31T13:24:40+01:00 Plan update DO NOT COMMIT - - - - - 660b12df by Alan Zimmerman at 2026-08-31T13:24:40+01:00 EPA: First pass implementation of HsList, for ClassDecls Just as a straight list replacement to start with, no payload. This shows the scope and invasiveness of the initial change - - - - - 7f1f7ec1 by Alan Zimmerman at 2026-08-31T13:24:40+01:00 EPA: HsList attempt WIP - - - - - f9cf132d by Alan Zimmerman at 2026-08-31T13:24:40+01:00 Enable ppr test for Haddock1. It currently fails - - - - - 6c753756 by Alan Zimmerman at 2026-08-31T13:24:40+01:00 WIP on removing NoEpAnn. Likely abandon - - - - - ded0ae39 by Alan Zimmerman at 2026-08-31T13:24:40+01:00 EPA: Add an overview doc for exact printing - - - - - 4c227442 by Simon Peyton Jones at 2026-08-31T13:24:40+01:00 Added an intro section - - - - - 109 changed files: - .gitlab-ci.yml - .gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py - + ANNLIST-LAYOUT-PLAN.md - + ExactPrint.md - + LAYOUT-SCOPE-PLAN.md - + changelog.d/T27705 - compiler/GHC/Core/Opt/Specialise.hs - compiler/GHC/Driver/Backpack.hs - compiler/GHC/Driver/Main/Interactive.hs - compiler/GHC/Hs.hs - compiler/GHC/Hs/Binds.hs - compiler/GHC/Hs/Decls.hs - compiler/GHC/Hs/Doc.hs - compiler/GHC/Hs/DocString.hs - compiler/GHC/Hs/Dump.hs - compiler/GHC/Hs/Expr.hs - compiler/GHC/Hs/Extension/Pass.hs - compiler/GHC/Hs/ImpExp.hs - compiler/GHC/Hs/Instances.hs - compiler/GHC/Hs/Pat.hs - compiler/GHC/Hs/Stats.hs - compiler/GHC/Hs/Utils.hs - compiler/GHC/HsToCore/Arrows.hs - compiler/GHC/HsToCore/Expr.hs - compiler/GHC/HsToCore/Expr.hs-boot - compiler/GHC/HsToCore/Match.hs - compiler/GHC/HsToCore/Pmc/Desugar.hs - compiler/GHC/HsToCore/Quote.hs - compiler/GHC/HsToCore/Ticks.hs - compiler/GHC/Iface/Ext/Ast.hs - compiler/GHC/Parser.y - compiler/GHC/Parser/Annotation.hs - compiler/GHC/Parser/PostProcess.hs - compiler/GHC/Parser/PostProcess/Haddock.hs - compiler/GHC/Rename/Bind.hs - compiler/GHC/Rename/Expr.hs - compiler/GHC/Rename/Module.hs - compiler/GHC/Rename/Splice.hs - compiler/GHC/Rename/Utils.hs - compiler/GHC/Runtime/Eval.hs - compiler/GHC/Tc/Deriv.hs - compiler/GHC/Tc/Deriv/Functor.hs - compiler/GHC/Tc/Deriv/Generate.hs - compiler/GHC/Tc/Gen/Arrow.hs - compiler/GHC/Tc/Gen/Bind.hs - compiler/GHC/Tc/Gen/Expr.hs - compiler/GHC/Tc/Gen/Match.hs - compiler/GHC/Tc/Module.hs - compiler/GHC/Tc/TyCl.hs - compiler/GHC/Tc/TyCl/PatSyn.hs - compiler/GHC/Tc/Types/Origin.hs - compiler/GHC/Tc/Zonk/Type.hs - compiler/GHC/ThToHs.hs - compiler/Language/Haskell/Syntax.hs - compiler/Language/Haskell/Syntax/Basic.hs - compiler/Language/Haskell/Syntax/Binds.hs - compiler/Language/Haskell/Syntax/Decls.hs - compiler/Language/Haskell/Syntax/Expr.hs - compiler/Language/Haskell/Syntax/Extension.hs - ghc/GHCi/UI.hs - testsuite/tests/ghc-api/T25121_status.stdout - testsuite/tests/ghc-api/exactprint/T22919.stderr - testsuite/tests/ghc-api/exactprint/Test20239.stderr - testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr - testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr - testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr - testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr - testsuite/tests/module/mod185.stderr - testsuite/tests/parser/should_compile/DumpParsedAst.stderr - testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr - testsuite/tests/parser/should_compile/DumpRenamedAst.stderr - testsuite/tests/parser/should_compile/DumpSemis.hs - testsuite/tests/parser/should_compile/DumpSemis.stderr - testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr - testsuite/tests/parser/should_compile/KindSigs.stderr - testsuite/tests/parser/should_compile/T14189.stderr - testsuite/tests/parser/should_compile/T15279.stderr - testsuite/tests/parser/should_compile/T15323.stderr - testsuite/tests/parser/should_compile/T20452.stderr - testsuite/tests/parser/should_compile/T20718.stderr - testsuite/tests/parser/should_compile/T20718b.stderr - testsuite/tests/parser/should_compile/T20846.stderr - testsuite/tests/parser/should_compile/T23315/T23315.stderr - testsuite/tests/perf/compiler/hard_hole_fits.stderr - testsuite/tests/printer/AnnotationNoListTuplePuns.stdout - + testsuite/tests/printer/Layout.hs - testsuite/tests/printer/Makefile - testsuite/tests/printer/T18791.stderr - + testsuite/tests/printer/Test20297.expected.hs - testsuite/tests/printer/Test20297.hs - testsuite/tests/printer/Test20297.stdout - + testsuite/tests/printer/Test20297MD.stdout - testsuite/tests/printer/Test24533.stdout - testsuite/tests/printer/all.T - + testsuite/tests/simplCore/should_run/T27705.hs - + testsuite/tests/simplCore/should_run/T27705.stdout - + testsuite/tests/simplCore/should_run/T27705_Inst.hs - testsuite/tests/simplCore/should_run/all.T - utils/check-exact/ExactPrint.hs - utils/check-exact/Main.hs - utils/check-exact/Parsers.hs - utils/check-exact/Transform.hs - utils/check-exact/Utils.hs - utils/haddock/haddock-api/src/Haddock/Backends/Hoogle.hs - utils/haddock/haddock-api/src/Haddock/Backends/LaTeX.hs - utils/haddock/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs - utils/haddock/haddock-api/src/Haddock/Convert.hs - utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs - utils/haddock/haddock-api/src/Haddock/Types.hs The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/a8da5c0cf08876918f260591fbe545f... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/a8da5c0cf08876918f260591fbe545f... You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
participants (1)
-
Alan Zimmerman (@alanz)