Florian Ragwitz pushed to branch wip/rafl/meaningful-main-return at Glasgow Haskell Compiler / GHC Commits: ffa56ae4 by sheaf at 2026-10-09T17:15:59+02:00 Preserve sign of zero when parsing -0.0# This commit leverages the recently added GHC.Types.Literal.Floating module in order to preserve the sign of negative zero from source-written floating-point literals. Fixes #27545 - - - - - d538cac9 by Facundo Domínguez at 2026-10-09T20:26:38-04:00 Propagate annotations to simple interfaces This allows annotations to be visible to plugins when run by haddock. The LiquidHaskell plugin needs the annotations, in particular. Fixes #26761 - - - - - 32c4f4ab by meooow25 at 2026-10-09T20:27:28-04:00 Bump containers submodule to 0.8.1 And fix affected tests. * T4086a: containers depends on template-haskell-lift now instead of template-haskell. * T22611: Updated to be less dependent on containers internals. - - - - - c786065e by sheaf at 2026-10-09T20:28:20-04:00 Use an explicit pattern match in toIfaceIdDetails The old wildcard pattern let this code bit rot: it did not properly account for recently added 'IdDetails' such as 'RepPolyId', which resulted in spurious 'pprTrace' messages that could even pollute HLS sessions. Fixes #23785 - - - - - e7cacf59 by sheaf at 2026-10-09T20:29:09-04:00 Take into account ifKind in freeNamesIfDecl Commit 3c2f4bb4 added the 'ifKind' field to various constructors of 'IfaceDecl', which preserves the original kind (before type synonym expansion) for better error messages. However, that commit forgot to update 'freeNamesIfDecl' correspondingly. This could result in a "urk! lookup local fingerpring" crash when e.g. a type's kind uses a type synonym defined later, as we failed to add a dependency on the type synonym during dependency analysis. Fixes #27916 - - - - - 7d7786e4 by Florian Ragwitz at 2026-10-10T18:36:21-07:00 Move exitWith into GHC.IO.Exception This is low enough within the hierarchy of base such that it can be imported into GHC.Essentials. The implementation of exitWith is slightly changed to avoid having to import Data.Bool, which would lead to a dependency cycle. We chose to keep it in base rather than moving it up all the way to GHC.Internal.IO.Exception to allow a reinstallable base to change it independently of GHC. With this, we can now have a known occurrence for GHC to reference in order to implement GHC proposal #631 (#24848). - - - - - eea8b99a by Florian Ragwitz at 2026-10-10T18:36:22-07:00 Implement MeaningfulMainReturn As per ghc-proposal#631, with one small adjustment explained in the comments. Fixes #24848. - - - - - 69 changed files: - + changelog.d/26761 - + changelog.d/MeaningfulMainReturn - + changelog.d/T23785 - + changelog.d/T27545 - + changelog.d/T27916 - compiler/GHC/Builtin/KnownOccs.hs - compiler/GHC/Core/Make.hs - compiler/GHC/CoreToIface.hs - compiler/GHC/Driver/Flags.hs - compiler/GHC/Driver/Session.hs - compiler/GHC/Hs/Lit.hs - compiler/GHC/HsToCore/Match/Literal.hs - compiler/GHC/Iface/Decl.hs - compiler/GHC/Iface/Syntax.hs - compiler/GHC/Iface/Tidy.hs - compiler/GHC/Tc/Errors/Ppr.hs - compiler/GHC/Tc/Errors/Types.hs - compiler/GHC/Tc/Module.hs - compiler/GHC/Types/Error/Codes.hs - compiler/Language/Haskell/Syntax/Lit.hs - + docs/users_guide/exts/meaningful_main_return.rst - docs/users_guide/exts/misc.rst - docs/users_guide/using-warnings.rst - libraries/base/src/GHC/Essentials.hs - libraries/base/src/GHC/IO/Exception.hs - libraries/base/src/System/Exit.hs - libraries/containers - libraries/ghc-internal/src/GHC/Internal/LanguageExtensions.hs - testsuite/tests/driver/T4437.hs - + testsuite/tests/ghc-e/should_run/T9086.stderr - testsuite/tests/interface-stability/base-exports.stdout - testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs - testsuite/tests/interface-stability/base-exports.stdout-mingw32 - testsuite/tests/interface-stability/template-haskell-exports.stdout - + testsuite/tests/meaningful-main-return/MainReturn_constrained_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_exit_code_alias_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_exit_code_bottom_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_exit_code_bottom_enabled_run.stderr - + testsuite/tests/meaningful-main-return/MainReturn_exit_code_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_exit_success_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_family_always_exit_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_family_invalid_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_family_invalid_enabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_family_stuck_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_family_stuck_enabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_int_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_int_enabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_newtype_disabled.stderr - + testsuite/tests/meaningful-main-return/MainReturn_newtype_enabled.stderr - + testsuite/tests/meaningful-main-return/MeaningfulMainReturn.hs - + testsuite/tests/meaningful-main-return/all.T - + testsuite/tests/numeric/should_run/T27545.hs - + testsuite/tests/numeric/should_run/T27545.stdout - testsuite/tests/numeric/should_run/all.T - testsuite/tests/package/T4806a.stderr - testsuite/tests/package/all.T - testsuite/tests/parser/should_compile/T7476/T7476.hs - + testsuite/tests/plugins/T26761.hs - + testsuite/tests/plugins/T26761.stderr - + testsuite/tests/plugins/T26761Plugin.hs - + testsuite/tests/plugins/T26761a.hs - testsuite/tests/plugins/all.T - testsuite/tests/simplCore/should_compile/T22611.hs - testsuite/tests/simplCore/should_compile/T22611.stderr - + testsuite/tests/simplCore/should_compile/T22611a.hs - testsuite/tests/simplCore/should_compile/all.T - + testsuite/tests/typecheck/should_compile/T27916.hs - testsuite/tests/typecheck/should_compile/all.T - + testsuite/tests/typecheck/should_compile/tc104.stderr The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/29a91779a63413b1ae5976a003f3228... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/29a91779a63413b1ae5976a003f3228... 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