Zubin pushed to branch wip/9.10.3-backports at Glasgow Haskell Compiler / GHC Commits: 05545de7 by Cheng Shao at 2025-07-24T07:39:03+05:30 testsuite: add T26120 marked as broken (cherry picked from commit 44b8cee2d5c114b238898ce4ee7b44ecaa0bf491) - - - - - 7fb42ed3 by Cheng Shao at 2025-07-24T07:39:03+05:30 compiler: fix GHC.SysTools.Ar archive member size writing logic This patch fixes a long-standing bug in `GHC.SysTools.Ar` that emits the wrong archive member size in each archive header. It should encode the exact length of the member payload, excluding any padding byte, otherwise malformed archive that extracts a broken object with an extra trailing byte could be created. Apart from the in-tree `T26120` test, I've also created an out-of-tree testsuite at https://github.com/TerrorJack/ghc-ar-quickcheck that contains QuickCheck roundtrip tests for `GHC.SysTools.Ar`. With this fix, simple roundtrip tests and `writeGNUAr`/GNU `ar` roundtrip test passes. There might be more bugs lurking in here, but this patch is still a critical bugfix already. Fixes #26120 #22586. Co-authored-by: Codex <codex@openai.com> (cherry picked from commit 894a04f3a82dd39ecef71619e2032c4dfead556e) - - - - - 41db0a0b by Vladislav Zavialov at 2025-07-24T07:39:03+05:30 Error message with EmptyCase and RequiredTypeArguments (#25004) Fix a panic triggered by a combination of \case{} and forall t -> ghci> let f :: forall (xs :: Type) -> (); f = \case {} panic! (the 'impossible' happened) GHC version 9.10.1: Util: only The new error message looks like this: ghci> let f :: forall (xs :: Type) -> (); f = \case {} <interactive>:5:41: error: [GHC-48010] • Empty list of alternatives in \case expression checked against a forall-type: forall xs -> ... This is achieved as follows: * A new data type, BadEmptyCaseReason, is now used to describe why an empty case has been rejected. Used in TcRnEmptyCase. * HsMatchContextRn is passed to tcMatches, so that the type checker can attach the syntactic context to the error message. * tcMatches now rejects type arguments if the list of alternatives is empty. This is what fixes the bug. (cherry picked from commit cce869ea2439bb16c284ce7ed71a173d54a8c9ad) - - - - - 7f9c7f22 by Vladislav Zavialov at 2025-07-24T07:39:03+05:30 Fix EmptyCase panic in tcMatches (#25960) Due to faulty reasoning in Note [Pattern types for EmptyCase], tcMatches was too keen to panic. * Old (incorrect) assumption: pat_tys is a singleton list. This does not hold when \case{} is checked against a function type preceded by invisible forall. See the new T25960 test case. * New (hopefully correct) assumption: vis_pat_tys is a singleton list. This should follow from: checkArgCounts :: MatchGroup GhcRn ... -> TcM VisArity checkArgCounts (MG { mg_alts = L _ [] }) = return 1 ... (cherry picked from commit b34890c7d4803041caff060391eec298e2b0a098) - - - - - 418bb568 by Vladislav Zavialov at 2025-07-24T07:39:03+05:30 Take subordinate 'type' specifiers into account This patch fixes multiple bugs (#22581, #25983, #25984, #25991) in name resolution of subordinate import lists. Bug #22581 ---------- In subordinate import lists, the use of the `type` namespace specifier used to be ignored. For example, this import statement was incorrectly accepted: import Prelude (Bool(type True)) Now it results in an error message: <interactive>:2:17: error: [GHC-51433] In the import of ‘Prelude’: a data type called ‘Bool’ is exported, but its subordinate item ‘True’ is not in the type namespace. Bug #25983 ---------- In subordinate import lists within a `hiding` clause, non-existent items led to a poor warning message with -Wdodgy-imports. Consider: import Prelude hiding (Bool(X)) The warning message for this import statement used to misreport the cause of the problem: <interactive>:3:24: warning: [GHC-56449] [-Wdodgy-imports] In the import of ‘Prelude’: an item called ‘Bool’ is exported, but it is a type. Now the warning message is correct: <interactive>:2:24: warning: [GHC-10237] [-Wdodgy-imports] In the import of ‘Prelude’: a data type called ‘Bool’ is exported, but it does not export any constructors or record fields called ‘X’. Bug #25984 ---------- In subordinate import lists within a `hiding` clause, non-existent items resulted in the entire import declaration being discarded. For example, this program was incorrectly accepted: import Prelude hiding (Bool(True,X)) t = True Now it results in an error message: <interactive>:2:5: error: [GHC-88464] Data constructor not in scope: True Bug #25991 ---------- In subordinate import lists, it was not possible to refer to a class method if there was an associated type of the same name: module M_helper where class C a b where type a # b (#) :: a -> b -> () module M where import M_helper (C((#))) This import declaration failed with: M.hs:2:28: error: [GHC-10237] In the import of ‘M_helper’: an item called ‘C’ is exported, but it does not export any children (constructors, class methods or field names) called ‘#’. Now it is accepted. Summary ------- The changes required to fix these bugs are almost entirely confined to GHC.Rename.Names. Other than that, there is a new error constructor BadImportNonTypeSubordinates with error code [GHC-51433]. Test cases: T22581a T22581b T22581c T22581d T25983a T25983b T25983c T25983d T25983e T25983f T25983g T25984a T25984b T25991a T25991b1 T25991b2 (cherry picked from commit 282df90570fa9c777c914ae543fea291f7158482) - - - - - 89d6c4ff by Zubin Duggal at 2025-07-24T07:39:03+05:30 fetch_gitlab: Ensure we copy users_guide.pdf and Haddock.pdf to the release docs directory Fixes #24093 (cherry picked from commit 48cf32dbd2cf52e1db7ee68bc79a5511ff52a2a6) - - - - - cf1f18c3 by Ben Gamari at 2025-07-24T07:39:03+05:30 configure: Drop probing of ld.gold As noted in #25716, `gold` has been dropped from binutils-2.44. Fixes #25716. Metric Increase: size_hello_artifact_gzip size_hello_unicode_gzip ghc_prim_so (cherry picked from commit c635f164cb62bcb3f34166adc24e5a9437415311) - - - - - a4123c53 by Ben Gamari at 2025-07-24T07:39:03+05:30 testsuite/recomp015: Ignore stderr This is necessary since ld.bfd complains that we don't have a .note.GNU-stack section, potentially resulting in an executable stack. (cherry picked from commit 637bb53825b9414f7c7dbed4cc3e5cc1ed4d2329) - - - - - e6b14504 by Andreas Klebinger at 2025-07-24T07:39:03+05:30 Add since tag and more docs for do-clever-arg-eta-expansion Fixes #26113 (cherry picked from commit 699deef58bf89ef2f111b35f72d303a3624d219d) - - - - - 0a8dcfb9 by Zubin Duggal at 2025-07-24T07:39:03+05:30 release: copy index.html from correct directory (cherry picked from commit cbfd0829cd61928976c9eb17ba4af18272466063) (cherry picked from commit ea3f7fd5f702d41077fff0a749b9c443d54e4844) - - - - - 1f698c03 by Tamar Christina at 2025-07-24T07:39:03+05:30 rts: Handle API set symbol versioning conflicts (cherry picked from commit 63373b95331f07c16e3eef511379fe3bed484839) - - - - - e5e2f396 by Tamar Christina at 2025-07-24T07:39:03+05:30 rts: Implement WEAK EXTERNAL undef redirection by target symbol name (cherry picked from commit e3bfc62416dd738bfd1a4464f0a622c9d0b7c393) - - - - - deb3c132 by Zubin Duggal at 2025-07-24T07:39:03+05:30 bump deepseq to 1.5.2.0 - - - - - c6832839 by Zubin Duggal at 2025-07-24T07:39:03+05:30 bump os-string to 2.0.7 - - - - - 2dd1198f by Zubin Duggal at 2025-07-24T07:39:03+05:30 bump process to 1.6.26.1 - - - - - 21752924 by Zubin Duggal at 2025-07-24T07:39:03+05:30 bump unix to 2.8.7.0 - - - - - 55fcc2b0 by Jens Petersen at 2025-07-24T07:39:03+05:30 9.10 hadrian can build with Cabal-3.12.1 fixes #25605 (cherry picked from commit 07f17b6ed1bb0ba7134ee8dfd992036e97552c94) - - - - - b13d35de by sheaf at 2025-07-24T07:39:03+05:30 Don't cache solved [W] HasCallStack constraints This commit ensures we do not add solved Wanted constraints that mention HasCallStack or HasExceptionContext constraints to the set of solved Wanted dictionary constraints: caching them is invalid, because re-using such cached dictionaries means using an old call-stack instead of constructing a new one, as was reported in #25529. Fixes #25529. (cherry picked from commit 256ac29c8df4f17a1d50ea243408d506ebf395d6) - - - - - 83dd65ac by Zubin Duggal at 2025-07-24T07:39:03+05:30 In commit "Don't cache solved [W] HasCallStack constraints" (256ac29c8df4f17a1d50ea243408d506ebf395d6), we attempt to use `tryM` to avoid errors when looking up certain known-key names like CallStack while compiling ghc-prim and ghc-internal. Unfortunately, `tryM` doesn't catch module lookup errors. This manifests as a failure to build ghc-prim in `--make` mode on the GHC 9.10 branch. Instead, we explicitly avoid doing lookups when we are compiling ghc-prim or ghc-internal instead of relying on catching the exception. - - - - - d87d99b0 by Zubin Duggal at 2025-07-24T07:51:30+05:30 Consider `PromotedDataCon` in `tyConStupidTheta` Haddock checks data declarations for the stupid theta so as not to pretty-print them as empty contexts. Type data declarations end up as `PromotedDataCon`s by the time Haddock performs this check, causing a panic. This commit extends `tyConStupidTheta` so that it returns an empty list for `PromotedDataCon`s. This decision was guided by the fact that type data declarations never have data type contexts (see (R1) in Note [Type data declarations]). Fixes #25739. (cherry picked from commit 8d33d048dbe159a045a4c304fa92318365a3dfe2) - - - - - 69eacf31 by Ryan Hendrickson at 2025-07-24T07:51:30+05:30 haddock: Preserve indentation in multiline examples Intended for use with :{ :}, but doesn't look for those characters. Any consecutive lines with birdtracks will only have initial whitespace stripped up to the column of the first line. (cherry picked from commit 2c73250494fd9f48ebda6d6fe72f0cd03182aff1) - - - - - 4defb0de by Ryan Hendrickson at 2025-07-24T07:51:30+05:30 haddock: Parse math even after ordinary characters Fixes a bug where math sections were not recognized if preceded by a character that isn't special (like space or a markup character). (cherry picked from commit b790d647c1ccdcc9aa8f166c3e0e42d0a5c29625) - - - - - c6abe994 by Ryan Hendrickson at 2025-07-24T07:51:30+05:30 haddock: Fix links to type operators (cherry picked from commit a0adc30d892f14f543f39d5c45faccacbc28afb4) - - - - - fa6e4d7d by Ryan Hendrickson at 2025-07-24T07:51:30+05:30 haddock: Document instances from other packages When attaching instances to `Interface`s, it isn't enough just to look for instances in the list of `Interface`s being processed. We also need to look in the modules on which they depend, including those outside of this package. Fixes #25147. Fixes #26079. (cherry picked from commit a26243fde4680271712a3d774e17f6cd6da4a652) - - - - - c4cea7f3 by Zubin Duggal at 2025-07-24T07:51:30+05:30 haddock: Don't warn about missing link destinations for derived names. Fixes #26114 (cherry picked from commit 5dabc718a04bfc4d277c5ff7f815ee3d6b9670cb) - - - - - 64334e30 by Zubin Duggal at 2025-07-24T07:51:30+05:30 Bump haddock version to 2.31.3 - - - - - 0450ef3c by Zubin Duggal at 2025-07-24T07:51:57+05:30 Prepare 9.10.3 prerelease - - - - - 99 changed files: - .gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py - compiler/GHC/Core/Predicate.hs - compiler/GHC/Core/TyCon.hs - compiler/GHC/Rename/Bind.hs - compiler/GHC/Rename/Names.hs - compiler/GHC/SysTools/Ar.hs - compiler/GHC/Tc/Errors/Ppr.hs - compiler/GHC/Tc/Errors/Types.hs - compiler/GHC/Tc/Gen/Arrow.hs - compiler/GHC/Tc/Gen/Expr.hs - compiler/GHC/Tc/Gen/Match.hs - compiler/GHC/Tc/Solver/Dict.hs - compiler/GHC/Tc/Solver/Monad.hs - compiler/GHC/Tc/Solver/Types.hs - compiler/GHC/Types/Error/Codes.hs - compiler/GHC/Utils/Outputable.hs - configure.ac - + docs/users_guide/9.10.3-notes.rst - docs/users_guide/exts/explicit_namespaces.rst - docs/users_guide/using-optimisation.rst - hadrian/hadrian.cabal - hadrian/src/Context.hs - hadrian/src/Hadrian/Haskell/Cabal/Parse.hs - hadrian/src/Hadrian/Haskell/Cabal/Type.hs - hadrian/src/Rules/BinaryDist.hs - hadrian/src/Rules/CabalReinstall.hs - hadrian/src/Rules/Register.hs - hadrian/src/Rules/Rts.hs - hadrian/src/Settings/Builders/Ghc.hs - libraries/deepseq - libraries/os-string - libraries/process - libraries/unix - m4/find_ld.m4 - rts/linker/PEi386.c - testsuite/driver/testlib.py - testsuite/tests/backpack/cabal/bkpcabal08/bkpcabal08.stdout - testsuite/tests/driver/T20604/T20604.stdout - testsuite/tests/driver/recomp015/all.T - + testsuite/tests/ghc-api/T26120.hs - + testsuite/tests/ghc-api/T26120.stdout - testsuite/tests/ghc-api/all.T - testsuite/tests/ghci/scripts/ghci064.stdout - testsuite/tests/module/T21826.stderr - testsuite/tests/module/mod81.stderr - testsuite/tests/module/mod91.stderr - testsuite/tests/plugins/plugins10.stdout - testsuite/tests/plugins/static-plugins.stdout - + testsuite/tests/rename/should_compile/T22581c.hs - + testsuite/tests/rename/should_compile/T22581c_helper.hs - + testsuite/tests/rename/should_compile/T22581d.script - + testsuite/tests/rename/should_compile/T22581d.stdout - + testsuite/tests/rename/should_compile/T25983a.hs - + testsuite/tests/rename/should_compile/T25983a.stderr - + testsuite/tests/rename/should_compile/T25983b.hs - + testsuite/tests/rename/should_compile/T25983b.stderr - + testsuite/tests/rename/should_compile/T25983c.hs - + testsuite/tests/rename/should_compile/T25983c.stderr - + testsuite/tests/rename/should_compile/T25983d.hs - + testsuite/tests/rename/should_compile/T25983d.stderr - + testsuite/tests/rename/should_compile/T25983e.hs - + testsuite/tests/rename/should_compile/T25983e.stderr - + testsuite/tests/rename/should_compile/T25983f.hs - + testsuite/tests/rename/should_compile/T25983f.stderr - + testsuite/tests/rename/should_compile/T25983g.hs - + testsuite/tests/rename/should_compile/T25983g.stderr - + testsuite/tests/rename/should_compile/T25984a.hs - + testsuite/tests/rename/should_compile/T25984a.stderr - + testsuite/tests/rename/should_compile/T25984a_helper.hs - + testsuite/tests/rename/should_compile/T25991a.hs - + testsuite/tests/rename/should_compile/T25991a_helper.hs - testsuite/tests/rename/should_compile/all.T - + testsuite/tests/rename/should_fail/T22581a.hs - + testsuite/tests/rename/should_fail/T22581a.stderr - + testsuite/tests/rename/should_fail/T22581a_helper.hs - + testsuite/tests/rename/should_fail/T22581b.hs - + testsuite/tests/rename/should_fail/T22581b.stderr - + testsuite/tests/rename/should_fail/T22581b_helper.hs - + testsuite/tests/rename/should_fail/T25984b.hs - + testsuite/tests/rename/should_fail/T25984b.stderr - + testsuite/tests/rename/should_fail/T25991b1.hs - + testsuite/tests/rename/should_fail/T25991b1.stderr - + testsuite/tests/rename/should_fail/T25991b2.hs - + testsuite/tests/rename/should_fail/T25991b2.stderr - + testsuite/tests/rename/should_fail/T25991b_helper.hs - testsuite/tests/rename/should_fail/T9006.stderr - testsuite/tests/rename/should_fail/all.T - + testsuite/tests/typecheck/should_compile/T25960.hs - testsuite/tests/typecheck/should_compile/all.T - + testsuite/tests/typecheck/should_fail/T25004.hs - + testsuite/tests/typecheck/should_fail/T25004.stderr - + testsuite/tests/typecheck/should_fail/T25004k.hs - + testsuite/tests/typecheck/should_fail/T25004k.stderr - testsuite/tests/typecheck/should_fail/all.T - + testsuite/tests/typecheck/should_run/T25529.hs - + testsuite/tests/typecheck/should_run/T25529.stdout - testsuite/tests/typecheck/should_run/all.T - utils/ghc-toolchain/src/GHC/Toolchain/Tools/Link.hs - utils/haddock The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/39ddc1cc1d72f58b6cc0d92497dee54... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/39ddc1cc1d72f58b6cc0d92497dee54... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Zubin (@wz1000)