[Git][ghc/ghc][master] Fix -dsuppress-uniques for free variables in demand signatures
by Marge Bot (@marge-bot) 08 Apr '26
by Marge Bot (@marge-bot) 08 Apr '26
08 Apr '26
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
5b82080a by Simon Jakobi at 2026-04-08T20:52:44-04:00
Fix -dsuppress-uniques for free variables in demand signatures
Before: Str=b{sXyZ->S}
With this patch: Str=b{S}
T13143.stderr is updated accordingly.
Fixes #27106.
- - - - -
5 changed files:
- compiler/GHC/Types/Demand.hs
- testsuite/tests/dmdanal/should_compile/T13143.stderr
- + testsuite/tests/dmdanal/should_compile/T27106.hs
- + testsuite/tests/dmdanal/should_compile/T27106.stderr
- testsuite/tests/dmdanal/should_compile/all.T
Changes:
=====================================
compiler/GHC/Types/Demand.hs
=====================================
@@ -2830,7 +2830,10 @@ instance Outputable DmdEnv where
= ppr div <> if null fv_elts then empty
else braces (fsep (map pp_elt fv_elts))
where
- pp_elt (uniq, dmd) = ppr uniq <> text "->" <> ppr dmd
+ pp_elt (uniq, dmd) =
+ sdocOption sdocSuppressUniques $ \case
+ True -> ppr dmd
+ False -> ppr uniq <> text "->" <> ppr dmd
fv_elts = nonDetUFMToList fvs
-- It's OK to use nonDetUFMToList here because we only do it for
-- pretty printing
=====================================
testsuite/tests/dmdanal/should_compile/T13143.stderr
=====================================
@@ -1,13 +1,13 @@
==================== Tidy Core ====================
Result size of Tidy Core
- = {terms: 71, types: 40, coercions: 0, joins: 0/0}
+ = {terms: 59, types: 31, coercions: 0, joins: 0/0}
Rec {
-- RHS size: {terms: 4, types: 3, coercions: 0, joins: 0/0}
T13143.$wf [InlPrag=NOINLINE, Occ=LoopBreaker]
:: forall a. (# #) -> a
-[GblId, Arity=1, Str=<B>b{sBX->S}, Cpr=b, Unf=OtherCon []]
+[GblId, Arity=1, Str=<B>b{S}, Cpr=b, Unf=OtherCon []]
T13143.$wf
= \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Internal.Types.(##)
end Rec }
@@ -16,7 +16,7 @@ end Rec }
f [InlPrag=NOINLINE[final]] :: forall a. Int -> a
[GblId,
Arity=1,
- Str=<B>b{sBX->S},
+ Str=<B>b{S},
Cpr=b,
Unf=Unf{Src=StableSystem, TopLvl=True,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
@@ -26,100 +26,58 @@ f [InlPrag=NOINLINE[final]] :: forall a. Int -> a
f = \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Internal.Types.(##)
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
-T13143.$trModule4 :: GHC.Internal.Prim.Addr#
-[GblId,
- Unf=Unf{Src=<vanilla>, TopLvl=True,
- Value=True, ConLike=True, WorkFree=True, Expandable=True,
- Guidance=IF_ARGS [] 20 0}]
-T13143.$trModule4 = "main"#
+$trModule1 :: GHC.Internal.Prim.Addr#
+[GblId, Unf=OtherCon []]
+$trModule1 = "main"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
-T13143.$trModule3 :: GHC.Internal.Types.TrName
-[GblId,
- Unf=Unf{Src=<vanilla>, TopLvl=True,
- Value=True, ConLike=True, WorkFree=True, Expandable=True,
- Guidance=IF_ARGS [] 10 10}]
-T13143.$trModule3 = GHC.Internal.Types.TrNameS T13143.$trModule4
+$trModule2 :: GHC.Internal.Types.TrName
+[GblId, Unf=OtherCon []]
+$trModule2 = GHC.Internal.Types.TrNameS $trModule1
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
-T13143.$trModule2 :: GHC.Internal.Prim.Addr#
-[GblId,
- Unf=Unf{Src=<vanilla>, TopLvl=True,
- Value=True, ConLike=True, WorkFree=True, Expandable=True,
- Guidance=IF_ARGS [] 30 0}]
-T13143.$trModule2 = "T13143"#
+$trModule3 :: GHC.Internal.Prim.Addr#
+[GblId, Unf=OtherCon []]
+$trModule3 = "T13143"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
-T13143.$trModule1 :: GHC.Internal.Types.TrName
-[GblId,
- Unf=Unf{Src=<vanilla>, TopLvl=True,
- Value=True, ConLike=True, WorkFree=True, Expandable=True,
- Guidance=IF_ARGS [] 10 10}]
-T13143.$trModule1 = GHC.Internal.Types.TrNameS T13143.$trModule2
+$trModule4 :: GHC.Internal.Types.TrName
+[GblId, Unf=OtherCon []]
+$trModule4 = GHC.Internal.Types.TrNameS $trModule3
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
-T13143.$trModule :: GHC.Internal.Types.Module
-[GblId,
- Unf=Unf{Src=<vanilla>, TopLvl=True,
- Value=True, ConLike=True, WorkFree=True, Expandable=True,
- Guidance=IF_ARGS [] 10 10}]
-T13143.$trModule
- = GHC.Internal.Types.Module T13143.$trModule3 T13143.$trModule1
+T13143.$trModule [InlPrag=[~]] :: GHC.Internal.Types.Module
+[GblId, Unf=OtherCon []]
+T13143.$trModule = GHC.Internal.Types.Module $trModule2 $trModule4
--- RHS size: {terms: 2, types: 1, coercions: 0, joins: 0/0}
+-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
lvl :: Int
-[GblId, Str=b{sBX->S}, Cpr=b]
-lvl = T13143.$wf @Int GHC.Internal.Types.(##)
+[GblId, Unf=OtherCon []]
+lvl = GHC.Internal.Types.I# 1#
+
+-- RHS size: {terms: 2, types: 1, coercions: 0, joins: 0/0}
+lvl1 :: Int
+[GblId, Str=b{S}, Cpr=b]
+lvl1 = T13143.$wf @Int GHC.Internal.Types.(##)
Rec {
-- RHS size: {terms: 28, types: 7, coercions: 0, joins: 0/0}
-T13143.$wg [InlPrag=[2], Occ=LoopBreaker]
- :: Bool -> Bool -> GHC.Internal.Prim.Int# -> GHC.Internal.Prim.Int#
-[GblId[StrictWorker([!, !])],
- Arity=3,
- Str=<1L><1L><L>,
- Unf=OtherCon []]
-T13143.$wg
- = \ (ds :: Bool) (ds1 :: Bool) (ww :: GHC.Internal.Prim.Int#) ->
+g [Occ=LoopBreaker] :: Bool -> Bool -> Int -> Int
+[GblId, Arity=3, Str=<1L><1L><L>, Unf=OtherCon []]
+g = \ (ds :: Bool) (ds1 :: Bool) (p :: Int) ->
case ds of {
False ->
case ds1 of {
- False ->
- T13143.$wg GHC.Internal.Types.False GHC.Internal.Types.True ww;
- True -> GHC.Internal.Prim.+# ww 1#
+ False -> g GHC.Internal.Types.False GHC.Internal.Types.True p;
+ True -> + @Int GHC.Internal.Num.$fNumInt p lvl
};
True ->
case ds1 of {
- False ->
- T13143.$wg GHC.Internal.Types.True GHC.Internal.Types.True ww;
- True -> case lvl of {}
+ False -> g GHC.Internal.Types.True GHC.Internal.Types.True p;
+ True -> lvl1
}
}
end Rec }
--- RHS size: {terms: 14, types: 6, coercions: 0, joins: 0/0}
-g [InlPrag=[2]] :: Bool -> Bool -> Int -> Int
-[GblId,
- Arity=3,
- Str=<1L><1L><1!P(L)>,
- Cpr=1,
- Unf=Unf{Src=StableSystem, TopLvl=True,
- Value=True, ConLike=True, WorkFree=True, Expandable=True,
- Guidance=ALWAYS_IF(arity=3,unsat_ok=True,boring_ok=False)
- Tmpl= \ (ds [Occ=Once1] :: Bool)
- (ds1 [Occ=Once1] :: Bool)
- (p [Occ=Once1!] :: Int) ->
- case p of { GHC.Internal.Types.I# ww [Occ=Once1] ->
- case T13143.$wg ds ds1 ww of ww1 [Occ=Once1] { __DEFAULT ->
- GHC.Internal.Types.I# ww1
- }
- }}]
-g = \ (ds :: Bool) (ds1 :: Bool) (p :: Int) ->
- case p of { GHC.Internal.Types.I# ww ->
- case T13143.$wg ds ds1 ww of ww1 { __DEFAULT ->
- GHC.Internal.Types.I# ww1
- }
- }
-
=====================================
testsuite/tests/dmdanal/should_compile/T27106.hs
=====================================
@@ -0,0 +1,5 @@
+module T27106 where
+
+{-# NOINLINE weird #-}
+weird :: Int -> a
+weird x = weird x
=====================================
testsuite/tests/dmdanal/should_compile/T27106.stderr
=====================================
@@ -0,0 +1,4 @@
+weird [InlPrag=NOINLINE[final]] :: forall a. Int -> a
+[GblId,
+ Arity=1,
+ Str=<B>b{S},
=====================================
testsuite/tests/dmdanal/should_compile/all.T
=====================================
@@ -45,6 +45,13 @@ test('T13077a', normal, compile, [''])
# T13143: WW for NOINLINE function f
test('T13143', [ grep_errmsg(r'^T13143\.\$wf') ], compile, ['-ddump-simpl -dsuppress-uniques'])
+# Uniques in the free variable part of a demand signature should be
+# suppressed by -dsuppress-uniques.
+test('T27106', normal, multimod_compile_filter,
+ ['T27106',
+ '-v0 -O -ddump-simpl -dsuppress-uniques',
+ r"sed -n '/^weird /,/.* Str=/p'"])
+
# T15627
# Absent bindings of unlifted types should be WW'ed away.
# The idea is to check that both $wmutVar and $warray
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/5b82080a3f3dd476e198130218d4da7…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/5b82080a3f3dd476e198130218d4da7…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][master] 2 commits: doc: improve eventlog-flush-interval flag documentation
by Marge Bot (@marge-bot) 08 Apr '26
by Marge Bot (@marge-bot) 08 Apr '26
08 Apr '26
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
e841931c by Teo Camarasu at 2026-04-08T20:52:00-04:00
doc: improve eventlog-flush-interval flag documentation
We mention the performance cost and how this flag can be turned off.
Resolves #27056
- - - - -
e332db25 by Teo Camarasu at 2026-04-08T20:52:01-04:00
docs/user_guide: fix typo
- - - - -
1 changed file:
- docs/users_guide/runtime_control.rst
Changes:
=====================================
docs/users_guide/runtime_control.rst
=====================================
@@ -1331,7 +1331,7 @@ When the program is linked with the :ghc-flag:`-eventlog` option
package.
Each event is associated with a timestamp which is the number of
- nanoseconds since the start of executation of the running program.
+ nanoseconds since the start of execution of the running program.
This is the elapsed time, not the CPU time.
.. rts-flag:: -ol⟨filename⟩
@@ -1352,6 +1352,12 @@ When the program is linked with the :ghc-flag:`-eventlog` option
This can be useful in live-monitoring situations where the
eventlog is consumed in real-time by another process.
+ Flushing the eventlog requires synchronising all capabilities,
+ which can be lead to performance regressions in highly parallel
+ applications.
+
+ To disable this flag set ⟨seconds⟩ to 0.
+
.. rts-flag:: -v [⟨flags⟩]
Log events as text to standard output, instead of to the
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/0a83b95b436c5a47deb07e96c45f6c…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/0a83b95b436c5a47deb07e96c45f6c…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][master] testsuite: Allow multiple ways to be run by setting multiple command-line options
by Marge Bot (@marge-bot) 08 Apr '26
by Marge Bot (@marge-bot) 08 Apr '26
08 Apr '26
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
0a83b95b by ARATA Mizuki at 2026-04-08T20:51:18-04:00
testsuite: Allow multiple ways to be run by setting multiple command-line options
This patch allows multiple `--test-way`s to take effect, like:
$ hadrian/build test --test-way=normal --test-way=llvm
Previously, only one way was run if the test speed was 'normal' or 'fast'.
Closes #26926
Co-authored-by: sheaf <sam.derbyshire(a)gmail.com>
- - - - -
1 changed file:
- testsuite/driver/testlib.py
Changes:
=====================================
testsuite/driver/testlib.py
=====================================
@@ -1619,14 +1619,28 @@ async def test_common_work(name: TestName, opts,
# Which ways we are asked to skip
do_ways = list(filter (ok_way,all_ways))
- # Only run all ways in slow mode.
- # See Note [validate and testsuite speed] in `validate`
if config.accept:
- # Only ever run one way
- do_ways = do_ways[:1]
+ # For --accept, run the normal way and in each way that has a
+ # way-specific expected output file (e.g. T20696.stderr-ext-interp).
+ def has_way_specific_output(way: WayName) -> bool:
+ for ext in ['stdout', 'stderr']:
+ path = in_srcdir(name + '.' + ext + '-' + way)
+ if path.exists():
+ return True
+ return False
+ way_specific_ways = list(filter(has_way_specific_output, do_ways))
+ do_ways = do_ways[:1] + [w for w in way_specific_ways if w not in do_ways[:1]]
+
+ # If speed=SLOW, we run all ways.
+ # If speed=NORMAL or FAST and at least one command-line way is given,
+ # we run all the command-line ways.
+ elif config.cmdline_ways:
+ pass
+
+ # Otherwise, we trim it down to:
+ # - a single default way (typically 'normal')
+ # - and, additionally, the test's extra ways.
elif config.speed > 0:
- # However, if we EXPLICITLY asked for a way (with extra_ways)
- # please test it!
explicit_ways = list(filter(lambda way: way in opts.extra_ways, do_ways))
other_ways = list(filter(lambda way: way not in opts.extra_ways, do_ways))
do_ways = other_ways[:1] + explicit_ways
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/0a83b95b436c5a47deb07e96c45f6c2…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/0a83b95b436c5a47deb07e96c45f6c2…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][master] hadrian: Don't include the package hash in the haddock directory
by Marge Bot (@marge-bot) 08 Apr '26
by Marge Bot (@marge-bot) 08 Apr '26
08 Apr '26
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
07267f79 by Zubin Duggal at 2026-04-08T20:50:25-04:00
hadrian: Don't include the package hash in the haddock directory
Since GHC 9.8 and hash_unit_ids, haddock urls have looked like`ghc-9.10.3/doc/html/libraries/base-4.20.2.0-39f9/**/*.html`
The inclusion of the hash makes it hard for downstream non-boot packages to properly link to these files, as the hash is not
part of a standard cabal substitution.
Since we only build one version of each package, we don't need the hash to disambiguate anything, we can just remove it.
Fixes #26635
- - - - -
4 changed files:
- hadrian/bindist/Makefile
- hadrian/src/CommandLine.hs
- hadrian/src/Context.hs
- hadrian/src/Settings/Builders/Cabal.hs
Changes:
=====================================
hadrian/bindist/Makefile
=====================================
@@ -205,7 +205,7 @@ update_package_db: install_bin install_lib
$(INSTALL_DATA) mk/system-cxx-std-lib-1.0.conf "$(DESTDIR)$(ActualLibsDir)/package.conf.d"
@echo "Updating the package DB"
$(foreach p, $(PKG_CONFS),\
- $(call patchpackageconf,$(shell echo $(notdir $p) | sed 's/-[0-9.]*-[0-9a-zA-Z]*\.conf//g'),$(shell echo "$p" | sed 's:\0xxx\0: :g'),$(docdir),$(shell mk/relpath.sh "$(ActualLibsDir)" "$(docdir)"),$(shell echo $(notdir $p) | sed 's/.conf//g')))
+ $(call patchpackageconf,$(shell echo $(notdir $p) | sed 's/-[0-9.]*-[0-9a-zA-Z]*\.conf//g'),$(shell echo "$p" | sed 's:\0xxx\0: :g'),$(docdir),$(shell mk/relpath.sh "$(ActualLibsDir)" "$(docdir)"),$(shell echo $(notdir $p) | sed 's/-[0-9a-zA-Z]*\.conf$$//')))
'$(DESTDIR)$(ActualBinsDir)/$(CrossCompilePrefix)ghc-pkg' --global-package-db "$(DESTDIR)$(ActualLibsDir)/package.conf.d" recache
.PHONY: install_mingw
=====================================
hadrian/src/CommandLine.hs
=====================================
@@ -115,7 +115,7 @@ data DocArgs = DocArgs
} deriving (Eq, Show)
defaultDocArgs :: DocArgs
-defaultDocArgs = DocArgs { docsBaseUrl = "../%pkgid%" }
+defaultDocArgs = DocArgs { docsBaseUrl = "../%pkg%" }
readConfigure :: Either String (CommandLineArgs -> CommandLineArgs)
readConfigure = Left "hadrian --configure has been deprecated (see #20167). Please run ./boot; ./configure manually"
=====================================
hadrian/src/Context.hs
=====================================
@@ -120,7 +120,9 @@ pkgSetupConfigFile context = pkgSetupConfigDir context <&> (-/- "setup-config")
pkgHaddockFile :: Context -> Action FilePath
pkgHaddockFile Context {..} = do
root <- buildRoot
- version <- pkgUnitId stage package
+ -- We don't want to use the hash in the html documentation because it
+ -- makes it harder for non-boot packages to link to boot packages, see #26635
+ version <- pkgSimpleIdentifier package
return $ root -/- "doc/html/libraries" -/- version -/- pkgName package <.> "haddock"
-- | Path to the registered ghc-pkg library file of a given 'Context', e.g.:
=====================================
hadrian/src/Settings/Builders/Cabal.hs
=====================================
@@ -83,6 +83,9 @@ commonCabalArgs :: Stage -> Args
commonCabalArgs stage = do
pkg <- getPackage
package_id <- expr $ pkgUnitId stage pkg
+ -- We don't want to use the hash in the html documentation because it
+ -- makes it harder for non-boot packages to link to boot packages, see #26635
+ package_simple_id <- expr $ pkgSimpleIdentifier pkg
let prefix = "${pkgroot}" ++ (if windowsHost then "" else "/..")
mconcat [ -- Don't strip libraries when cross compiling.
-- TODO: We need to set @--with-strip=(stripCmdPath :: Action FilePath)@,
@@ -110,7 +113,7 @@ commonCabalArgs stage = do
--
-- This doesn't hold if we move the @doc@ folder anywhere else.
, arg "--htmldir"
- , arg $ "${pkgroot}/../../doc/html/libraries/" ++ package_id
+ , arg $ "${pkgroot}/../../doc/html/libraries/" ++ package_simple_id
-- These trigger a need on each dependency, so every important to need
-- them in parallel or it linearises the build of Ghc and GhcPkg
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/07267f79d91169f474cacc8bcd38d76…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/07267f79d91169f474cacc8bcd38d76…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
4a122bb6 by Phil Hazelden at 2026-04-08T20:49:42-04:00
Implement modifiers syntax.
The `%m` syntax of linear types is now accepted in more places, to allow
use by future extensions, though so far linear types is still the only
consumer.
This may break existing code where it
* Uses -XLinearTypes.
* Has code of the form `a %m -> b`, where `m` can't be inferred to be
kind Multiplicity.
The code can be fixed either by adding a kind annotation, or by setting
`-XLinearTypes -XNoModifiers`.
Proposal:
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0370-m…
- - - - -
165 changed files:
- compiler/GHC/Core/Multiplicity.hs
- compiler/GHC/Core/TyCo/Ppr.hs
- compiler/GHC/Driver/Flags.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Hs/Binds.hs
- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Hs/Instances.hs
- compiler/GHC/Hs/Pat.hs
- compiler/GHC/Hs/Syn/Type.hs
- compiler/GHC/Hs/Type.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/HsToCore/Binds.hs
- compiler/GHC/HsToCore/Docs.hs
- compiler/GHC/HsToCore/Errors/Ppr.hs
- compiler/GHC/HsToCore/Errors/Types.hs
- compiler/GHC/HsToCore/Expr.hs
- 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/Iface/Type.hs
- compiler/GHC/Parser.y
- compiler/GHC/Parser/Errors/Ppr.hs
- compiler/GHC/Parser/Errors/Types.hs
- compiler/GHC/Parser/Lexer.x
- compiler/GHC/Parser/PostProcess.hs
- compiler/GHC/Parser/PostProcess/Haddock.hs
- compiler/GHC/Parser/Types.hs
- compiler/GHC/Rename/Bind.hs
- compiler/GHC/Rename/Expr.hs
- compiler/GHC/Rename/HsType.hs
- compiler/GHC/Rename/Module.hs
- compiler/GHC/Rename/Names.hs
- compiler/GHC/Rename/Pat.hs
- compiler/GHC/Tc/Deriv/Generate.hs
- compiler/GHC/Tc/Errors/Ppr.hs
- compiler/GHC/Tc/Errors/Types.hs
- compiler/GHC/Tc/Gen/App.hs
- compiler/GHC/Tc/Gen/Bind.hs
- compiler/GHC/Tc/Gen/Default.hs
- compiler/GHC/Tc/Gen/Foreign.hs
- compiler/GHC/Tc/Gen/HsType.hs
- compiler/GHC/Tc/Gen/Pat.hs
- compiler/GHC/Tc/Gen/Sig.hs
- compiler/GHC/Tc/TyCl.hs
- compiler/GHC/Tc/TyCl/PatSyn.hs
- compiler/GHC/Tc/Types/Evidence.hs
- compiler/GHC/Tc/Utils/Env.hs
- compiler/GHC/Tc/Zonk/Type.hs
- compiler/GHC/ThToHs.hs
- compiler/GHC/Types/Error/Codes.hs
- compiler/GHC/Types/Hint.hs
- compiler/GHC/Types/Hint/Ppr.hs
- compiler/Language/Haskell/Syntax/Binds.hs
- compiler/Language/Haskell/Syntax/Decls.hs
- compiler/Language/Haskell/Syntax/Decls/Foreign.hs
- compiler/Language/Haskell/Syntax/Expr.hs
- compiler/Language/Haskell/Syntax/Extension.hs
- compiler/Language/Haskell/Syntax/Pat.hs
- compiler/Language/Haskell/Syntax/Type.hs
- docs/users_guide/9.16.1-notes.rst
- docs/users_guide/exts/linear_types.rst
- + docs/users_guide/exts/modifiers.rst
- docs/users_guide/exts/syntax.rst
- docs/users_guide/using-warnings.rst
- libraries/ghc-internal/src/GHC/Internal/LanguageExtensions.hs
- testsuite/tests/driver/T4437.hs
- testsuite/tests/ghc-api/T25121_status.stdout
- testsuite/tests/ghc-api/exactprint/Test20239.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/haddock/should_compile_flag_haddock/haddockLinear.hs
- testsuite/tests/haddock/should_compile_flag_haddock/haddockLinear.stderr
- testsuite/tests/interface-stability/template-haskell-exports.stdout
- testsuite/tests/linear/should_compile/Linear1Rule.hs
- testsuite/tests/linear/should_compile/MultConstructor.hs
- testsuite/tests/linear/should_compile/NonLinearRecord.hs
- testsuite/tests/linear/should_compile/OldList.hs
- testsuite/tests/linear/should_compile/T19400.hs
- testsuite/tests/linear/should_compile/T22546.hs
- testsuite/tests/linear/should_compile/T23025.hs
- testsuite/tests/linear/should_compile/T26332.hs
- testsuite/tests/linear/should_fail/LinearErrOrigin.hs
- testsuite/tests/linear/should_fail/LinearErrOrigin.stderr
- testsuite/tests/linear/should_fail/LinearLet10.hs
- testsuite/tests/linear/should_fail/LinearLet10.stderr
- testsuite/tests/linear/should_fail/LinearPartialSig.hs
- testsuite/tests/linear/should_fail/LinearPartialSig.stderr
- testsuite/tests/linear/should_fail/LinearRole.hs
- + testsuite/tests/linear/should_fail/LinearUnknownModifierKind.hs
- + testsuite/tests/linear/should_fail/LinearUnknownModifierKind.stderr
- testsuite/tests/linear/should_fail/LinearVar.hs
- testsuite/tests/linear/should_fail/LinearVar.stderr
- testsuite/tests/linear/should_fail/T18888_datakinds.hs
- testsuite/tests/linear/should_fail/T18888_datakinds.stderr
- testsuite/tests/linear/should_fail/T19361.hs
- testsuite/tests/linear/should_fail/T19361.stderr
- testsuite/tests/linear/should_fail/T20083.hs
- testsuite/tests/linear/should_fail/T20083.stderr
- testsuite/tests/linear/should_fail/T21278.hs
- testsuite/tests/linear/should_fail/T21278.stderr
- + testsuite/tests/linear/should_fail/TooManyMultiplicities.hs
- + testsuite/tests/linear/should_fail/TooManyMultiplicities.stderr
- + testsuite/tests/linear/should_fail/TooManyMultiplicitiesU.hs
- + testsuite/tests/linear/should_fail/TooManyMultiplicitiesU.stderr
- testsuite/tests/linear/should_fail/all.T
- + testsuite/tests/modifiers/Makefile
- + testsuite/tests/modifiers/should_compile/LinearNoModifiers.hs
- + testsuite/tests/modifiers/should_compile/Makefile
- + testsuite/tests/modifiers/should_compile/Modifier1Linear.hs
- + testsuite/tests/modifiers/should_compile/Modifier1Linear.stderr
- + testsuite/tests/modifiers/should_compile/Modifiers.hs
- + testsuite/tests/modifiers/should_compile/Modifiers.stderr
- + testsuite/tests/modifiers/should_compile/ModifiersSuggestLinear.hs
- + testsuite/tests/modifiers/should_compile/ModifiersSuggestLinear.stderr
- + testsuite/tests/modifiers/should_compile/all.T
- + testsuite/tests/modifiers/should_fail/Makefile
- + testsuite/tests/modifiers/should_fail/ModifiersExprUnexpectedInQuote.hs
- + testsuite/tests/modifiers/should_fail/ModifiersExprUnexpectedInQuote.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersForbiddenHere.hs
- + testsuite/tests/modifiers/should_fail/ModifiersForbiddenHere.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersNoExt.hs
- + testsuite/tests/modifiers/should_fail/ModifiersNoExt.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersUnexpectedInQuote.hs
- + testsuite/tests/modifiers/should_fail/ModifiersUnexpectedInQuote.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersUnknownKind.hs
- + testsuite/tests/modifiers/should_fail/ModifiersUnknownKind.stderr
- + testsuite/tests/modifiers/should_fail/all.T
- testsuite/tests/parser/should_compile/DumpParsedAst.stderr
- testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
- testsuite/tests/parser/should_compile/DumpSemis.stderr
- testsuite/tests/parser/should_compile/KindSigs.stderr
- testsuite/tests/parser/should_compile/T14189.stderr
- testsuite/tests/parser/should_compile/T15323.stderr
- testsuite/tests/parser/should_compile/T18834a.stderr
- testsuite/tests/parser/should_compile/T20452.stderr
- testsuite/tests/parser/should_compile/T23315/T23315.stderr
- testsuite/tests/parser/should_fail/T19928.stderr
- testsuite/tests/printer/Makefile
- + testsuite/tests/printer/PprModifiers.hs
- testsuite/tests/printer/T18791.stderr
- testsuite/tests/printer/Test20315.hs
- testsuite/tests/printer/Test20315.stderr
- testsuite/tests/printer/Test24533.stdout
- testsuite/tests/printer/all.T
- testsuite/tests/rename/should_compile/T22478a.hs
- testsuite/tests/typecheck/no_skolem_info/T20232.hs
- testsuite/tests/typecheck/no_skolem_info/T20232.stderr
- utils/check-exact/ExactPrint.hs
- utils/check-exact/Main.hs
- utils/check-exact/Transform.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/GhcUtils.hs
- utils/haddock/haddock-api/src/Haddock/Interface/Create.hs
- utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
- utils/haddock/haddock-api/src/Haddock/Interface/RenameType.hs
- utils/haddock/haddock-api/src/Haddock/Types.hs
- utils/haddock/html-test/src/LinearTypes.hs
- utils/haddock/latex-test/src/LinearTypes/LinearTypes.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/4a122bb68f515af580b4fa07217a085…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/4a122bb68f515af580b4fa07217a085…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
08 Apr '26
Simon Peyton Jones pushed to branch wip/spj-reinstallable-base at Glasgow Haskell Compiler / GHC
Commits:
0a2dbd93 by Simon Peyton Jones at 2026-04-09T00:18:12+01:00
More
- - - - -
16 changed files:
- compiler/GHC/Builtin/KnownKeys.hs
- compiler/GHC/Builtin/KnownOccs.hs
- compiler/GHC/HsToCore/Binds.hs
- compiler/GHC/HsToCore/Match/Literal.hs
- compiler/GHC/HsToCore/Monad.hs
- compiler/GHC/HsToCore/Pmc/Desugar.hs
- compiler/GHC/Runtime/Eval.hs
- compiler/GHC/Tc/Instance/Class.hs
- compiler/GHC/Tc/Instance/Typeable.hs
- compiler/GHC/Tc/Utils/Env.hs
- compiler/GHC/Tc/Utils/Instantiate.hs
- libraries/base/src/GHC/KnownKeyNames.hs
- libraries/ghc-internal/src/GHC/Internal/IO.hs
- libraries/ghc-internal/src/GHC/Internal/Read.hs
- libraries/ghc-internal/src/GHC/Internal/Real.hs
- libraries/ghc-internal/src/GHC/Internal/Types.hs
Changes:
=====================================
compiler/GHC/Builtin/KnownKeys.hs
=====================================
@@ -177,7 +177,7 @@ wired in ones are defined in GHC.Builtin.Types etc.
basicKnownKeyTable :: [(OccName, KnownKey)]
basicKnownKeyTable
- = [ (rationalTyConOcc, rationalTyConKey)
+ = [ (mkTcOcc "Read", readClassKey)
, (mkTcOcc "Show", showClassKey)
, (mkTcOcc "Foldable", foldableClassKey)
, (mkTcOcc "Traversable", traversableClassKey)
@@ -213,15 +213,22 @@ basicKnownKeyTable
, (mkTcOcc "Real", realClassKey)
, (mkTcOcc "Fractional", fractionalClassKey)
, (mkTcOcc "RealFloat", realFloatClassKey)
--- , (mkTcOcc "RealFrac", realFracClassKey)
+ , (mkTcOcc "RealFrac", realFracClassKey)
, (mkVarOcc "-", minusClassOpKey)
, (mkVarOcc "negate", negateClassOpKey)
, (mkVarOcc "fromInteger", fromIntegerClassOpKey)
+ , (mkVarOcc "divInt#", divIntIdKey)
+ , (mkVarOcc "modInt#", modIntIdKey)
+
+ , (mkTcOcc "Ratio", ratioTyConKey)
+ , (mkDataOcc ":%", ratioDataConKey)
+ , (mkVarOcc "fromIntegral", fromIntegralIdKey)
, (mkVarOcc "fromRational", fromRationalClassOpKey)
+ , (mkVarOcc "toInteger", toIntegerClassOpKey)
+ , (mkVarOcc "toRational", toRationalClassOpKey)
+ , (mkVarOcc "realToFrac", realToFracIdKey)
, (mkVarOcc "mkRationalBase2", mkRationalBase2IdKey)
, (mkVarOcc "mkRationalBase10", mkRationalBase10IdKey)
- , (mkVarOcc "divInt#", divIntIdKey)
- , (mkVarOcc "modInt#", modIntIdKey)
-- Class Functor
, (mkTcOcc "Functor", functorClassKey)
@@ -297,19 +304,23 @@ basicKnownKeyTable
, (mkVarOcc "fromStaticPtr", fromStaticPtrClassOpKey)
, (mkVarOcc "makeStatic", makeStaticKey)
+ -- WithDict
+ , (mkTcOcc "WithDict", withDictClassKey)
+
-- Unsatisfiable class
, (mkTcOcc "Unsatisfiable", unsatisfiableClassKey)
, (mkVarOcc "unsatisfiable", unsatisfiableIdKey)
+
-- Known-key names that have BuiltinRules in ConstantFold
, (mkVarOcc "unpackFoldrCString#", unpackCStringFoldrIdKey)
, (mkVarOcc "unpackFoldrCStringUtf8#", unpackCStringFoldrUtf8IdKey)
, (mkVarOcc "unpackAppendCString#", unpackCStringAppendIdKey)
, (mkVarOcc "unpackAppendCStringUtf8#", unpackCStringAppendUtf8IdKey)
, (mkVarOcc "cstringLength#", cstringLengthIdKey)
-
, (mkVarOcc "eqString", eqStringIdKey)
, (mkVarOcc "inline", inlineIdKey)
+ , (mkVarOcc "seq#", seqHashKey)
-- Unsafe equality proofs
, (mkVarOcc "unsafeEqualityProof", unsafeEqualityProofIdKey)
@@ -387,60 +398,19 @@ basicKnownKeyNames
runMainIOName,
runRWName,
- -- Type representation types
- trModuleTyConName, trModuleDataConName,
- trNameSDataConName,
- trTyConTyConName, trTyConDataConName,
-
- -- Typeable
- someTypeRepTyConName, -- known-occ
- someTypeRepDataConName, -- ditto
- kindRepTyConName,
- kindRepTyConAppDataConName,
- kindRepVarDataConName,
- kindRepAppDataConName,
- kindRepFunDataConName,
- kindRepTYPEDataConName,
- kindRepTypeLitSDataConName,
- typeLitSymbolDataConName,
- typeLitNatDataConName,
- typeLitCharDataConName,
- typeRepIdName,
- mkTrConName,
- mkTrAppCheckedName,
- mkTrFunName,
- typeSymbolTypeRepName, typeNatTypeRepName, typeCharTypeRepName,
- trGhcPrimModuleName,
-
-- KindReps for common cases
+ trGhcPrimModuleName,
starKindRepName,
starArrStarKindRepName,
starArrStarArrStarKindRepName,
constraintKindRepName,
- -- WithDict
- withDictClassName,
-
- -- seq#
- seqHashName,
-
- -- Dynamic
- toDynName,
-
- -- Conversion functions
- ratioTyConName, ratioDataConName,
- toIntegerName, toRationalName,
- fromIntegralName, realToFracName,
-
-- String stuff
fromStringName,
-- Monad stuff
bindMName,
- -- Read stuff
- readClassName,
-
-- Stable pointers
newStablePtrName,
@@ -871,17 +841,6 @@ bniVarQual str key = varQual gHC_INTERNAL_NUM_INTEGER (fsLit str) key
---------------------------------
-- GHC.Internal.Real types and classes
-ratioTyConName, ratioDataConName,
- fromRationalName, toIntegerName, toRationalName, fromIntegralName,
- realToFracName :: Name
-ratioTyConName = tcQual gHC_INTERNAL_REAL (fsLit "Ratio") ratioTyConKey
-ratioDataConName = dcQual gHC_INTERNAL_REAL (fsLit ":%") ratioDataConKey
-fromRationalName = varQual gHC_INTERNAL_REAL (fsLit "fromRational") fromRationalClassOpKey
-toIntegerName = varQual gHC_INTERNAL_REAL (fsLit "toInteger") toIntegerClassOpKey
-toRationalName = varQual gHC_INTERNAL_REAL (fsLit "toRational") toRationalClassOpKey
-fromIntegralName = varQual gHC_INTERNAL_REAL (fsLit "fromIntegral")fromIntegralIdKey
-realToFracName = varQual gHC_INTERNAL_REAL (fsLit "realToFrac") realToFracIdKey
-
-- other GHC.Internal.Float functions
integerToFloatName, integerToDoubleName,
rationalToFloatName, rationalToDoubleName :: Name
@@ -890,71 +849,12 @@ integerToDoubleName = varQual gHC_INTERNAL_FLOAT (fsLit "integerToDouble#") int
rationalToFloatName = varQual gHC_INTERNAL_FLOAT (fsLit "rationalToFloat#") rationalToFloatIdKey
rationalToDoubleName = varQual gHC_INTERNAL_FLOAT (fsLit "rationalToDouble#") rationalToDoubleIdKey
--- Typeable representation types
-trModuleTyConName
- , trModuleDataConName
- , trNameSDataConName
- , trTyConTyConName
- , trTyConDataConName
- :: Name
-trModuleTyConName = tcQual gHC_TYPES (fsLit "Module") trModuleTyConKey
-trModuleDataConName = dcQual gHC_TYPES (fsLit "Module") trModuleDataConKey
-trNameSDataConName = dcQual gHC_TYPES (fsLit "TrNameS") trNameSDataConKey
-trTyConTyConName = tcQual gHC_TYPES (fsLit "TyCon") trTyConTyConKey
-trTyConDataConName = dcQual gHC_TYPES (fsLit "TyCon") trTyConDataConKey
-
-kindRepTyConName
- , kindRepTyConAppDataConName
- , kindRepVarDataConName
- , kindRepAppDataConName
- , kindRepFunDataConName
- , kindRepTYPEDataConName
- , kindRepTypeLitSDataConName
- :: Name
-kindRepTyConName = tcQual gHC_TYPES (fsLit "KindRep") kindRepTyConKey
-kindRepTyConAppDataConName = dcQual gHC_TYPES (fsLit "KindRepTyConApp") kindRepTyConAppDataConKey
-kindRepVarDataConName = dcQual gHC_TYPES (fsLit "KindRepVar") kindRepVarDataConKey
-kindRepAppDataConName = dcQual gHC_TYPES (fsLit "KindRepApp") kindRepAppDataConKey
-kindRepFunDataConName = dcQual gHC_TYPES (fsLit "KindRepFun") kindRepFunDataConKey
-kindRepTYPEDataConName = dcQual gHC_TYPES (fsLit "KindRepTYPE") kindRepTYPEDataConKey
-kindRepTypeLitSDataConName = dcQual gHC_TYPES (fsLit "KindRepTypeLitS") kindRepTypeLitSDataConKey
-
-typeLitSymbolDataConName
- , typeLitNatDataConName
- , typeLitCharDataConName
- :: Name
-typeLitSymbolDataConName = dcQual gHC_TYPES (fsLit "TypeLitSymbol") typeLitSymbolDataConKey
-typeLitNatDataConName = dcQual gHC_TYPES (fsLit "TypeLitNat") typeLitNatDataConKey
-typeLitCharDataConName = dcQual gHC_TYPES (fsLit "TypeLitChar") typeLitCharDataConKey
-
-- Class Typeable, and functions for constructing `Typeable` dictionaries
-someTypeRepTyConName
- , someTypeRepDataConName
- , mkTrConName
- , mkTrAppCheckedName
- , mkTrFunName
- , typeRepIdName
- , typeNatTypeRepName
- , typeSymbolTypeRepName
- , typeCharTypeRepName
- , trGhcPrimModuleName
- :: Name
-someTypeRepTyConName = tcQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "SomeTypeRep") someTypeRepTyConKey
-someTypeRepDataConName = dcQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "SomeTypeRep") someTypeRepDataConKey
-typeRepIdName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "typeRep#") typeRepIdKey
-mkTrConName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrCon") mkTrConKey
-mkTrAppCheckedName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrAppChecked") mkTrAppCheckedKey
-mkTrFunName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrFun") mkTrFunKey
-typeNatTypeRepName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "typeNatTypeRep") typeNatTypeRepKey
-typeSymbolTypeRepName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "typeSymbolTypeRep") typeSymbolTypeRepKey
-typeCharTypeRepName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "typeCharTypeRep") typeCharTypeRepKey
--- this is the Typeable 'Module' for GHC.Prim (which has no code, so we place in GHC.Types)
+trGhcPrimModuleName, starKindRepName, starArrStarKindRepName,
+ starArrStarArrStarKindRepName, constraintKindRepName :: Name
+-- This is the Typeable 'Module' for GHC.Prim (which has no code, so we place in GHC.Types)
-- See Note [Grand plan for Typeable] in GHC.Tc.Instance.Typeable.
trGhcPrimModuleName = varQual gHC_TYPES (fsLit "tr$ModuleGHCPrim") trGhcPrimModuleKey
-
--- Typeable KindReps for some common cases
-starKindRepName, starArrStarKindRepName,
- starArrStarArrStarKindRepName, constraintKindRepName :: Name
starKindRepName = varQual gHC_TYPES (fsLit "krep$*") starKindRepKey
starArrStarKindRepName = varQual gHC_TYPES (fsLit "krep$*Arr*") starArrStarKindRepKey
starArrStarArrStarKindRepName = varQual gHC_TYPES (fsLit "krep$*->*->*") starArrStarArrStarKindRepKey
@@ -967,10 +867,6 @@ withDictClassName = clsQual gHC_MAGIC_DICT (fsLit "WithDict") withDictClassKey
nonEmptyTyConName :: Name
nonEmptyTyConName = tcQual gHC_INTERNAL_BASE (fsLit "NonEmpty") nonEmptyTyConKey
--- seq#
-seqHashName :: Name
-seqHashName = varQual gHC_INTERNAL_IO (fsLit "seq#") seqHashKey
-
-- Custom type errors
errorMessageTypeErrorFamName
, typeErrorTextDataConName
@@ -998,10 +894,6 @@ typeErrorShowTypeDataConName =
unsafeCoercePrimName:: Name
unsafeCoercePrimName = varQual gHC_INTERNAL_UNSAFE_COERCE (fsLit "unsafeCoerce#") unsafeCoercePrimIdKey
--- Dynamic
-toDynName :: Name
-toDynName = varQual gHC_INTERNAL_DYNAMIC (fsLit "toDyn") toDynIdKey
-
-- Error module
assertErrorName :: Name
assertErrorName = varQual gHC_INTERNAL_IO_Exception (fsLit "assertError") assertErrorIdKey
@@ -1010,10 +902,6 @@ assertErrorName = varQual gHC_INTERNAL_IO_Exception (fsLit "assertError") asse
traceName :: Name
traceName = varQual gHC_INTERNAL_DEBUG_TRACE (fsLit "trace") traceKey
--- Class Read
-readClassName :: Name
-readClassName = clsQual gHC_INTERNAL_READ (fsLit "Read") readClassKey
-
genericClassKeys :: [KnownKey]
genericClassKeys = [genClassKey, gen1ClassKey]
@@ -1157,9 +1045,6 @@ dcQual modu str unique = mk_known_key_name dataName modu str unique
* *
********************************************************************* -}
-rationalTyConOcc :: KnownOcc
-rationalTyConOcc = mkTcOcc "Rational"
-
sappendClassOpOcc, pureAClassOpOcc, thenAClassOpOcc,
returnMClassOpOcc, thenMClassOpOcc, mappendClassOpOcc :: KnownOcc
sappendClassOpOcc = mkVarOcc "<>"
=====================================
compiler/GHC/Builtin/KnownOccs.hs
=====================================
@@ -21,6 +21,8 @@ import GHC.Builtin.PrimOps.Ids (primOpId)
import GHC.Builtin.TH( unsafeCodeCoerceName, liftTypedName )
import GHC.Builtin.KnownKeys
+import GHC.Types.Name( KnownOcc )
+import GHC.Types.Name.Occurrence
import GHC.Types.Name.Reader( RdrName, mkVarUnqual, getRdrName
, nameRdrName )
import GHC.Types.Id.Make( coerceName ) -- `coerce` is wired-in
@@ -48,6 +50,85 @@ mechanisms:
-}
+{- *********************************************************************
+* *
+ Known-occ OccNames
+* *
+********************************************************************* -}
+
+rationalTyConOcc :: KnownOcc
+rationalTyConOcc = mkTcOcc "Rational"
+
+-- Class Typeable, and functions for constructing `Typeable` dictionaries
+someTypeRepTyConOcc
+ , someTypeRepDataConOcc
+ , mkTrConOcc
+ , mkTrAppCheckedOcc
+ , mkTrFunOcc
+ , typeRepIdOcc
+ , typeNatTypeRepOcc
+ , typeSymbolTypeRepOcc
+ , typeCharTypeRepOcc
+ :: KnownOcc
+someTypeRepTyConOcc = mkTcOcc "SomeTypeRep"
+someTypeRepDataConOcc = mkDataOcc "SomeTypeRep"
+typeRepIdOcc = mkVarOcc "typeRep#"
+mkTrConOcc = mkVarOcc "mkTrCon"
+mkTrAppCheckedOcc = mkVarOcc "mkTrAppChecked"
+mkTrFunOcc = mkVarOcc "mkTrFun"
+typeNatTypeRepOcc = mkVarOcc "typeNatTypeRep"
+typeSymbolTypeRepOcc = mkVarOcc "typeSymbolTypeRep"
+typeCharTypeRepOcc = mkVarOcc "typeCharTypeRep"
+
+typeLitSymbolDataConOcc
+ , typeLitNatDataConOcc
+ , typeLitCharDataConOcc
+ :: KnownOcc
+typeLitSymbolDataConOcc = mkDataOcc "TypeLitSymbol"
+typeLitNatDataConOcc = mkDataOcc "TypeLitNat"
+typeLitCharDataConOcc = mkDataOcc "TypeLitChar"
+
+
+trModuleTyConOcc
+ , trModuleDataConOcc
+ , trNameSDataConOcc
+ , trTyConTyConOcc
+ , trTyConDataConOcc
+ :: KnownOcc
+trModuleTyConOcc = mkTcOcc "Module"
+trModuleDataConOcc = mkDataOcc "Module"
+trNameSDataConOcc = mkDataOcc "TrNameS"
+trTyConTyConOcc = mkTcOcc "TyCon"
+trTyConDataConOcc = mkDataOcc "TyCon"
+
+-- Typeable representation types
+kindRepTyConOcc
+ , kindRepTyConAppDataConOcc
+ , kindRepVarDataConOcc
+ , kindRepAppDataConOcc
+ , kindRepFunDataConOcc
+ , kindRepTYPEDataConOcc
+ , kindRepTypeLitSDataConOcc
+ :: KnownOcc
+kindRepTyConOcc = mkTcOcc "KindRep"
+kindRepTyConAppDataConOcc = mkDataOcc "KindRepTyConApp"
+kindRepVarDataConOcc = mkDataOcc "KindRepVar"
+kindRepAppDataConOcc = mkDataOcc "KindRepApp"
+kindRepFunDataConOcc = mkDataOcc "KindRepFun"
+kindRepTYPEDataConOcc = mkDataOcc "KindRepTYPE"
+kindRepTypeLitSDataConOcc = mkDataOcc "KindRepTypeLitS"
+
+
+{- *********************************************************************
+* *
+ Misc global RdrNames
+* *
+********************************************************************* -}
+
+toDyn_RDR :: RdrName
+toDyn_RDR = knownVarOccRdrName "toDyn"
+
+
{- *********************************************************************
* *
Global RdrNames used by derived instances
=====================================
compiler/GHC/HsToCore/Binds.hs
=====================================
@@ -58,7 +58,8 @@ import GHC.Core.Rules
import GHC.Core.Ppr( pprCoreBinders )
import GHC.Core.TyCo.Compare( eqType )
-import GHC.Builtin.KnownKeys
+import GHC.Builtin.KnownKeys( typeableClassKey )
+import GHC.Builtin.KnownOccs
import GHC.Builtin.Types ( naturalTy, typeSymbolKind, charTy )
import GHC.Tc.Types.Evidence
@@ -1761,10 +1762,10 @@ type TypeRepExpr = CoreExpr
-- | Returns a @CoreExpr :: TypeRep ty@
ds_ev_typeable :: Type -> EvTypeable -> DsM CoreExpr
ds_ev_typeable ty (EvTypeableTyCon tc kind_ev)
- = do { mkTrCon <- dsLookupGlobalId mkTrConName
+ = do { mkTrCon <- dsLookupKnownOccId mkTrConOcc
-- mkTrCon :: forall k (a :: k). TyCon -> TypeRep k -> TypeRep a
- ; someTypeRepTyCon <- dsLookupTyCon someTypeRepTyConName
- ; someTypeRepDataCon <- dsLookupDataCon someTypeRepDataConName
+ ; someTypeRepTyCon <- dsLookupKnownOccTyCon someTypeRepTyConOcc
+ ; someTypeRepDataCon <- dsLookupKnownOccDataCon someTypeRepDataConOcc
-- SomeTypeRep :: forall k (a :: k). TypeRep a -> SomeTypeRep
; tc_rep <- tyConRep tc -- :: TyCon
@@ -1793,7 +1794,7 @@ ds_ev_typeable ty (EvTypeableTyApp ev1 ev2)
| Just (t1,t2) <- splitAppTy_maybe ty
= do { e1 <- getRep ev1 t1
; e2 <- getRep ev2 t2
- ; mkTrAppChecked <- dsLookupGlobalId mkTrAppCheckedName
+ ; mkTrAppChecked <- dsLookupKnownOccId mkTrAppCheckedOcc
-- mkTrAppChecked :: forall k1 k2 (a :: k1 -> k2) (b :: k1).
-- TypeRep a -> TypeRep b -> TypeRep (a b)
; let (_, k1, k2) = splitFunTy (typeKind t1) -- drop the multiplicity,
@@ -1809,7 +1810,7 @@ ds_ev_typeable ty (EvTypeableTrFun evm ev1 ev2)
= do { e1 <- getRep ev1 t1
; e2 <- getRep ev2 t2
; em <- getRep evm m
- ; mkTrFun <- dsLookupGlobalId mkTrFunName
+ ; mkTrFun <- dsLookupKnownOccId mkTrFunOcc
-- mkTrFun :: forall (m :: Multiplicity) r1 r2 (a :: TYPE r1) (b :: TYPE r2).
-- TypeRep m -> TypeRep a -> TypeRep b -> TypeRep (a % m -> b)
; let r1 = getRuntimeRep t1
@@ -1820,7 +1821,7 @@ ds_ev_typeable ty (EvTypeableTrFun evm ev1 ev2)
ds_ev_typeable ty (EvTypeableTyLit ev)
= -- See Note [Typeable for Nat and Symbol] in GHC.Tc.Instance.Class
- do { fun <- dsLookupGlobalId tr_fun
+ do { fun <- dsLookupKnownOccId tr_fun
; dict <- dsEvTerm ev -- Of type KnownNat/KnownSymbol
; return (mkApps (mkTyApps (Var fun) [ty]) [ dict ]) }
where
@@ -1829,9 +1830,9 @@ ds_ev_typeable ty (EvTypeableTyLit ev)
-- tr_fun is the Name of
-- typeNatTypeRep :: KnownNat a => TypeRep a
-- of typeSymbolTypeRep :: KnownSymbol a => TypeRep a
- tr_fun | ty_kind `eqType` naturalTy = typeNatTypeRepName
- | ty_kind `eqType` typeSymbolKind = typeSymbolTypeRepName
- | ty_kind `eqType` charTy = typeCharTypeRepName
+ tr_fun | ty_kind `eqType` naturalTy = typeNatTypeRepOcc
+ | ty_kind `eqType` typeSymbolKind = typeSymbolTypeRepOcc
+ | ty_kind `eqType` charTy = typeCharTypeRepOcc
| otherwise = panic "dsEvTypeable: unknown type lit kind"
ds_ev_typeable ty ev
@@ -1845,7 +1846,7 @@ getRep :: EvTerm -- ^ EvTerm for @Typeable ty@
-- typeRep# :: forall k (a::k). Typeable k a -> TypeRep a
getRep ev ty
= do { typeable_expr <- dsEvTerm ev
- ; typeRepId <- dsLookupGlobalId typeRepIdName
+ ; typeRepId <- dsLookupKnownOccId typeRepIdOcc
; let ty_args = [typeKind ty, ty]
; return (mkApps (mkTyApps (Var typeRepId) ty_args) [ typeable_expr ]) }
=====================================
compiler/GHC/HsToCore/Match/Literal.hs
=====================================
@@ -238,7 +238,7 @@ dsFractionalLitToRational fl@FL{ fl_signi = signi, fl_exp = exp, fl_exp_base = b
dsRational :: Rational -> DsM CoreExpr
dsRational (n :% d) = do
platform <- targetPlatform <$> getDynFlags
- dcn <- dsLookupDataCon ratioDataConName
+ dcn <- dsLookupKnownKeyDataCon ratioDataConKey
let cn = mkIntegerExpr platform n
let dn = mkIntegerExpr platform d
return $ mkCoreConApps dcn [Type integerTy, cn, dn]
=====================================
compiler/GHC/HsToCore/Monad.hs
=====================================
@@ -27,9 +27,9 @@ module GHC.HsToCore.Monad (
-- Looking up in the environment
dsLookupGlobal, dsLookupGlobalId, dsLookupTyCon,
dsLookupDataCon, dsLookupConLike,
- dsLookupKnownKeyTyCon, dsLookupKnownKeyId,
+ dsLookupKnownKeyTyCon, dsLookupKnownKeyDataCon, dsLookupKnownKeyId,
dsLookupKnownKeyName,
- dsLookupKnownOccId, dsLookupKnownOccTyCon,
+ dsLookupKnownOccId, dsLookupKnownOccTyCon, dsLookupKnownOccDataCon,
DsMetaEnv, DsMetaVal(..), dsGetMetaEnv, dsLookupMetaEnv, dsExtendMetaEnv,
@@ -597,6 +597,9 @@ dsLookupKnownOccThing occ
dsLookupKnownOccTyCon :: KnownOcc -> DsM TyCon
dsLookupKnownOccTyCon uniq = tyThingTyCon <$> dsLookupKnownOccThing uniq
+dsLookupKnownOccDataCon :: KnownOcc -> DsM DataCon
+dsLookupKnownOccDataCon uniq = tyThingDataCon <$> dsLookupKnownOccThing uniq
+
dsLookupKnownOccId :: KnownOcc -> DsM Id
dsLookupKnownOccId uniq = tyThingId <$> dsLookupKnownOccThing uniq
@@ -624,6 +627,9 @@ dsLookupKnownKeyThing uniq
dsLookupKnownKeyTyCon :: KnownKey -> DsM TyCon
dsLookupKnownKeyTyCon uniq = tyThingTyCon <$> dsLookupKnownKeyThing uniq
+dsLookupKnownKeyDataCon :: KnownKey -> DsM DataCon
+dsLookupKnownKeyDataCon uniq = tyThingDataCon <$> dsLookupKnownKeyThing uniq
+
dsLookupKnownKeyId :: KnownKey -> DsM Id
dsLookupKnownKeyId uniq = tyThingId <$> dsLookupKnownKeyThing uniq
=====================================
compiler/GHC/HsToCore/Pmc/Desugar.hs
=====================================
@@ -21,7 +21,8 @@ import GHC.Types.Id
import GHC.Core.ConLike
import GHC.Types.Name
import GHC.Builtin.Types
-import GHC.Builtin.KnownKeys (rationalTyConKey, toListClassOpKey)
+import GHC.Builtin.KnownKeys ( toListClassOpKey )
+import GHC.Builtin.KnownOccs ( rationalTyConOcc )
import GHC.Types.SrcLoc
import GHC.Utils.Outputable
import GHC.Utils.Panic
@@ -253,7 +254,7 @@ desugarPat x pat = case pat of
, (HsFractional f) <- val
, negates <- if fl_neg f then 1 else 0
-> do
- rat_tc <- dsLookupKnownKeyTyCon rationalTyConKey
+ rat_tc <- dsLookupKnownOccTyCon rationalTyConOcc
let rat_ty = mkTyConTy rat_tc
return $ Just $ PmLit rat_ty (PmLitOverRat negates f)
| otherwise
=====================================
compiler/GHC/Runtime/Eval.hs
=====================================
@@ -83,7 +83,7 @@ import GHC.Tc.Utils.TcType
import GHC.Tc.Types.Constraint
import GHC.Tc.Types.Origin
-import GHC.Builtin.KnownKeys ( toDynName )
+import GHC.Builtin.KnownOccs ( toDyn_RDR )
import GHC.Builtin.Types ( pretendNameIsInScope )
import GHC.Data.Maybe
@@ -1290,7 +1290,7 @@ dynCompileExpr expr = do
parsed_expr <- parseExpr expr
-- > Data.Dynamic.toDyn expr
let loc = getLoc parsed_expr
- to_dyn_expr = mkHsApp (L loc . mkHsVar . L (l2l loc) $ getRdrName toDynName)
+ to_dyn_expr = mkHsApp (L loc . mkHsVar . L (l2l loc) toDyn_RDR)
parsed_expr
hval <- compileParsedExpr to_dyn_expr
return (unsafeCoerce hval :: Dynamic)
=====================================
compiler/GHC/Tc/Instance/Class.hs
=====================================
@@ -443,7 +443,7 @@ matchWithDict [cls_ty, mty]
, [inst_meth_ty] <- dataConInstArgTys dict_dc dict_args
= do { sv <- mkSysLocalM (fsLit "withDict_s") ManyTy mty
; k <- mkSysLocalM (fsLit "withDict_k") ManyTy (mkInvisFunTy cls_ty openAlphaTy)
- ; wd_cls <- tcLookupClass withDictClassName
+ ; wd_cls <- tcLookupKnownKeyClass withDictClassKey
-- Given ev_expr : mty ~N# inst_meth_ty, construct the method of
-- the WithDict dictionary:
=====================================
compiler/GHC/Tc/Instance/Typeable.hs
=====================================
@@ -12,32 +12,41 @@ module GHC.Tc.Instance.Typeable(mkTypeableBinds, tyConIsTypeable) where
import GHC.Prelude
import GHC.Platform
-import GHC.Types.Basic ( TypeOrConstraint(..) )
-import GHC.Types.InlinePragma ( neverInlinePragma )
-import GHC.Types.SourceText ( SourceText(..) )
-import GHC.Iface.Env( newGlobalBinder )
-import GHC.Core.TyCo.Rep( Type(..), TyLit(..) )
+import GHC.Hs
+
import GHC.Tc.Utils.Env
import GHC.Tc.Types.Evidence ( mkWpTyApps )
import GHC.Tc.Utils.Monad
import GHC.Tc.Utils.TcType
-import GHC.Types.TyThing ( lookupId )
+
+import GHC.Iface.Env( newGlobalBinder )
+
import GHC.Builtin.KnownKeys
+import GHC.Builtin.KnownOccs
import GHC.Builtin.Types.Prim ( primTyCons )
import GHC.Builtin.Types
( runtimeRepTyCon
, levityTyCon, vecCountTyCon, vecElemTyCon
, nilDataCon, consDataCon )
+
+import GHC.Types.TyThing ( lookupId )
+import GHC.Types.Basic ( TypeOrConstraint(..) )
+import GHC.Types.InlinePragma ( neverInlinePragma )
+import GHC.Types.SourceText ( SourceText(..) )
import GHC.Types.Name
import GHC.Types.Id
+import GHC.Types.Var ( VarBndr(..) )
+
+import GHC.Core.TyCo.Rep( Type(..), TyLit(..) )
import GHC.Core.Type
import GHC.Core.TyCon
import GHC.Core.DataCon
+import GHC.Core.Map.Type
+
import GHC.Unit.Module
-import GHC.Hs
+
import GHC.Driver.DynFlags
-import GHC.Types.Var ( VarBndr(..) )
-import GHC.Core.Map.Type
+
import GHC.Utils.Fingerprint(Fingerprint(..), fingerprintString, fingerprintFingerprints)
import GHC.Utils.Outputable
import GHC.Utils.Panic
@@ -342,7 +351,7 @@ mkModIdBindings
= do { mod <- getModule
; loc <- getSrcSpanM
; mod_nm <- newGlobalBinder mod (mkVarOccFS (fsLit "$trModule")) Nothing loc
- ; trModuleTyCon <- tcLookupTyCon trModuleTyConName
+ ; trModuleTyCon <- tcLookupKnownOccTyCon trModuleTyConOcc
; let mod_id = mkExportedVanillaId mod_nm (mkTyConApp trModuleTyCon [])
`setInlinePragma` neverInlinePragma
-- See Note [NOINLINE on generated Typeable bindings]
@@ -354,7 +363,7 @@ mkModIdBindings
mkModIdRHS :: Module -> TcM (LHsExpr GhcTc)
mkModIdRHS mod
- = do { trModuleDataCon <- tcLookupDataCon trModuleDataConName
+ = do { trModuleDataCon <- tcLookupKnownOccDataCon trModuleDataConOcc
; trNameLit <- mkTrNameLit
; return $ nlHsDataCon trModuleDataCon
`nlHsApp` trNameLit (unitFS (moduleUnit mod))
@@ -393,7 +402,7 @@ data TyConTodo
todoForTyCons :: Module -> Id -> [TyCon] -> TcM TypeRepTodo
todoForTyCons mod mod_id tycons = do
- trTyConTy <- mkTyConTy <$> tcLookupTyCon trTyConTyConName
+ trTyConTy <- mkTyConTy <$> tcLookupKnownOccTyCon trTyConTyConOcc
let mk_rep_id :: TyConRepName -> Id
mk_rep_id rep_name = mkExportedVanillaId rep_name trTyConTy
`setInlinePragma` neverInlinePragma
@@ -426,7 +435,7 @@ todoForTyCons mod mod_id tycons = do
todoForExportedKindReps :: [(Kind, Name)] -> TcM TypeRepTodo
todoForExportedKindReps kinds = do
- trKindRepTy <- mkTyConTy <$> tcLookupTyCon kindRepTyConName
+ trKindRepTy <- mkTyConTy <$> tcLookupKnownOccTyCon kindRepTyConOcc
let mkId (k, name) = (k, mkExportedVanillaId name trKindRepTy)
return $ ExportedKindRepsTodo $ map mkId kinds
@@ -472,7 +481,7 @@ mkPrimTypeableTodos
= do { mod <- getModule
; if mod == gHC_TYPES
then do { -- Build Module binding for GHC.Prim
- trModuleTyCon <- tcLookupTyCon trModuleTyConName
+ trModuleTyCon <- tcLookupKnownOccTyCon trModuleTyConOcc
; let ghc_prim_module_id =
mkExportedVanillaId trGhcPrimModuleName
(mkTyConTy trModuleTyCon)
@@ -547,17 +556,17 @@ data TypeableStuff
collect_stuff :: TcM TypeableStuff
collect_stuff = do
platform <- targetPlatform <$> getDynFlags
- trTyConDataCon <- tcLookupDataCon trTyConDataConName
- kindRepTyCon <- tcLookupTyCon kindRepTyConName
- kindRepTyConAppDataCon <- tcLookupDataCon kindRepTyConAppDataConName
- kindRepVarDataCon <- tcLookupDataCon kindRepVarDataConName
- kindRepAppDataCon <- tcLookupDataCon kindRepAppDataConName
- kindRepFunDataCon <- tcLookupDataCon kindRepFunDataConName
- kindRepTYPEDataCon <- tcLookupDataCon kindRepTYPEDataConName
- kindRepTypeLitSDataCon <- tcLookupDataCon kindRepTypeLitSDataConName
- typeLitSymbolDataCon <- tcLookupDataCon typeLitSymbolDataConName
- typeLitNatDataCon <- tcLookupDataCon typeLitNatDataConName
- typeLitCharDataCon <- tcLookupDataCon typeLitCharDataConName
+ trTyConDataCon <- tcLookupKnownOccDataCon trTyConDataConOcc
+ kindRepTyCon <- tcLookupKnownOccTyCon kindRepTyConOcc
+ kindRepTyConAppDataCon <- tcLookupKnownOccDataCon kindRepTyConAppDataConOcc
+ kindRepVarDataCon <- tcLookupKnownOccDataCon kindRepVarDataConOcc
+ kindRepAppDataCon <- tcLookupKnownOccDataCon kindRepAppDataConOcc
+ kindRepFunDataCon <- tcLookupKnownOccDataCon kindRepFunDataConOcc
+ kindRepTYPEDataCon <- tcLookupKnownOccDataCon kindRepTYPEDataConOcc
+ kindRepTypeLitSDataCon <- tcLookupKnownOccDataCon kindRepTypeLitSDataConOcc
+ typeLitSymbolDataCon <- tcLookupKnownOccDataCon typeLitSymbolDataConOcc
+ typeLitNatDataCon <- tcLookupKnownOccDataCon typeLitNatDataConOcc
+ typeLitCharDataCon <- tcLookupKnownOccDataCon typeLitCharDataConOcc
trNameLit <- mkTrNameLit
return Stuff {..}
@@ -566,7 +575,7 @@ collect_stuff = do
-- representations.
mkTrNameLit :: TcM (FastString -> LHsExpr GhcTc)
mkTrNameLit = do
- trNameSDataCon <- tcLookupDataCon trNameSDataConName
+ trNameSDataCon <- tcLookupKnownOccDataCon trNameSDataConOcc
let trNameLit :: FastString -> LHsExpr GhcTc
trNameLit fs = nlHsPar $ nlHsDataCon trNameSDataCon
`nlHsApp` nlHsLit (mkHsStringPrimLit fs)
=====================================
compiler/GHC/Tc/Utils/Env.hs
=====================================
@@ -31,7 +31,7 @@ module GHC.Tc.Utils.Env(
tcLookupKnownKeyGlobal, tcLookupKnownKeyTyCon,
tcLookupKnownKeyClass, tcLookupKnownKeyId,
- tcLookupKnownOccTyCon, tcLookupKnownOccId,
+ tcLookupKnownOccTyCon, tcLookupKnownOccDataCon, tcLookupKnownOccId,
rnLookupKnownKeyName, rnLookupKnownKeyRdr, getKnownKeySource,
-- Local environment
@@ -304,11 +304,7 @@ tcLookupGlobalOnly name
Nothing -> pprPanic "tcLookupGlobalOnly" (ppr name) }
tcLookupDataCon :: Name -> TcM DataCon
-tcLookupDataCon name = do
- thing <- tcLookupGlobal name
- case thing of
- AConLike (RealDataCon con) -> return con
- _ -> wrongThingErr WrongThingDataCon (AGlobal thing) name
+tcLookupDataCon = get_datacon . tcLookupGlobal
tcLookupPatSyn :: Name -> TcM PatSyn
tcLookupPatSyn name = do
@@ -337,18 +333,10 @@ tcLookupRecSelParent (RnRecUpdParent { rnRecUpdCons = cons })
-- Any constructor will give the same result here.
tcLookupClass :: Name -> TcM Class
-tcLookupClass name = do
- thing <- tcLookupGlobal name
- case thing of
- ATyCon tc | Just cls <- tyConClass_maybe tc -> return cls
- _ -> wrongThingErr WrongThingClass (AGlobal thing) name
+tcLookupClass = get_class . tcLookupGlobal
tcLookupTyCon :: Name -> TcM TyCon
-tcLookupTyCon name = do
- thing <- tcLookupGlobal name
- case thing of
- ATyCon tc -> return tc
- _ -> wrongThingErr WrongThingTyCon (AGlobal thing) name
+tcLookupTyCon = get_tycon . tcLookupGlobal
tcLookupAxiom :: Name -> TcM (CoAxiom Branched)
tcLookupAxiom name = do
@@ -573,6 +561,9 @@ tcLookupKnownOccGlobal = tcrn_wrapper . lookupKnownOccThing
tcLookupKnownOccTyCon :: HasDebugCallStack => KnownOcc -> TcM TyCon
tcLookupKnownOccTyCon = get_tycon . tcLookupKnownOccGlobal
+tcLookupKnownOccDataCon :: HasDebugCallStack => KnownOcc -> TcM DataCon
+tcLookupKnownOccDataCon = get_datacon . tcLookupKnownOccGlobal
+
tcLookupKnownOccId :: HasDebugCallStack => KnownOcc -> TcM Id
tcLookupKnownOccId = get_id . tcLookupKnownOccGlobal
@@ -592,6 +583,13 @@ get_tycon do_the_lookup
ATyCon tc -> return tc
_ -> wrongThingErr WrongThingClass (AGlobal thing) (getName thing) }
+get_datacon :: TcRn TyThing -> TcRn DataCon
+get_datacon do_the_lookup
+ = do { thing <- do_the_lookup
+ ; case thing of
+ AConLike (RealDataCon con) -> return con
+ _ -> wrongThingErr WrongThingClass (AGlobal thing) (getName thing) }
+
get_id :: TcRn TyThing -> TcRn Id
get_id do_the_lookup
= do { thing <- do_the_lookup
=====================================
compiler/GHC/Tc/Utils/Instantiate.hs
=====================================
@@ -40,7 +40,7 @@ import GHC.Prelude
import GHC.Driver.Session
import GHC.Driver.Env
-import GHC.Builtin.KnownKeys( rationalTyConOcc )
+import GHC.Builtin.KnownOccs( rationalTyConOcc )
import GHC.Builtin.Types( integerTy )
import GHC.Hs
=====================================
libraries/base/src/GHC/KnownKeyNames.hs
=====================================
@@ -11,8 +11,7 @@
--
module GHC.KnownKeyNames
- ( Rational
- , Eq(..), Ord(..) -- With their methods
+ ( Eq(..), Ord(..) -- With their methods
, Show, Read
, Foldable, Traversable
, Functor, fmap
@@ -21,6 +20,7 @@ module GHC.KnownKeyNames
-- Misc
, (.), (&&), not, map, foldr, build
+ , seq#
-- Applicative
, Applicative, pure, mzip, (<*>), (*>)
@@ -61,10 +61,14 @@ module GHC.KnownKeyNames
-- Numbers
, Num, Integral, Real, Fractional, RealFloat
, (+), (-), (*), negate, fromInteger
- , fromRational
- , mkRationalBase2, mkRationalBase10
, divInt#, modInt#
+ , Ratio( (:%) ), Rational
+ , mkRationalBase2, mkRationalBase10
+ , toInteger, toRational
+ , fromIntegral, fromRational
+ , realToFrac
+
-- Strings
, IsString
, fromString
@@ -82,6 +86,9 @@ module GHC.KnownKeyNames
-- IO
, IO, thenIO, bindIO, returnIO, print
+ -- WithDict
+ , WithDict
+
-- Unsatisfiable
, Unsatisfiable, unsatisfiable
@@ -95,6 +102,15 @@ module GHC.KnownKeyNames
, UnsafeEquality( UnsafeRefl ), unsafeEqualityProof
+ -- Typeable and type representations
+ , SomeTypeRep( SomeTypeRep ), Module( Module )
+ , TyCon( TyCon ), TrName( TrNameS )
+ , KindRep( KindRepTyConApp, KindRepVar, KindRepApp, KindREpFun, KindRepTYPE, KindREpTypeLitS )
+ , typeLitSort( TypeLitSymbol, TypeLitNat, TypeLitChar )
+ , typeRep#
+ , mkTrCon, mkTrAppChecked, mkTrFun
+ , typeNatTypeRep, typeSymbolTypeRep, typeCharTypeRep
+
-- Bignums
, bigNatEq#, bigNatCompare, bigNatCompareWord#
, naturalToWord#, naturalPopCount#, naturalShiftR#, naturalShiftL#
@@ -153,13 +169,15 @@ import Data.String( IsString )
import GHC.Internal.Base
import GHC.Internal.Ix
import GHC.Internal.Magic( inline )
+import GHC.Internal.Magic.Dict( WithDict )
import GHC.Internal.Enum
+import GHC.Internal.Dynamic( toDyn )
import GHC.Internal.Data.Data
import GHC.Internal.Data.String( fromString )
import GHC.Internal.Data.Foldable( Foldable )
import GHC.Internal.Data.Traversable( Traversable )
import GHC.Internal.Float( RealFloat )
-import GHC.Internal.Real( mkRationalBase2, mkRationalBase10 )
+import GHC.Internal.Real
import GHC.Internal.Control.Monad( fail, guard )
import GHC.Internal.Control.Monad.Fix( mfix, loop )
import GHC.Internal.Control.Monad.Zip( mzip )
@@ -177,6 +195,7 @@ import GHC.Internal.StaticPtr( IsStatic(..) )
import GHC.Internal.StaticPtr.Internal( makeStatic )
import GHC.Internal.Data.Typeable( Typeable, gcast1, gcast2 )
+import GHC.Internal.Data.Typeable.Internal
import GHC.Internal.Generics
import GHC.Internal.Bignum.BigNat
=====================================
libraries/ghc-internal/src/GHC/Internal/IO.hs
=====================================
@@ -6,6 +6,10 @@
, ScopedTypeVariables
, UnboxedTuples
#-}
+
+{-# OPTIONS_GHC -fdefines-known-key-names #-}
+ -- Defines seq#
+
{-# OPTIONS_GHC -funbox-strict-fields #-}
{-# OPTIONS_HADDOCK not-home #-}
=====================================
libraries/ghc-internal/src/GHC/Internal/Read.hs
=====================================
@@ -1,5 +1,9 @@
{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE CPP, NoImplicitPrelude, StandaloneDeriving, ScopedTypeVariables #-}
+
+{-# OPTIONS_GHC -fdefines-known-key-names #-}
+ -- Defines Read
+
{-# OPTIONS_HADDOCK not-home #-}
-----------------------------------------------------------------------------
=====================================
libraries/ghc-internal/src/GHC/Internal/Real.hs
=====================================
@@ -2,7 +2,7 @@
{-# LANGUAGE CPP, NoImplicitPrelude, MagicHash, UnboxedTuples, BangPatterns #-}
{-# OPTIONS_GHC -fdefines-known-key-names #-}
- -- Defines Real, Integral etc, etc, etc
+ -- Defines Real, Integral, Ratio etc, etc, etc
{-# OPTIONS_GHC -Wno-orphans #-}
=====================================
libraries/ghc-internal/src/GHC/Internal/Types.hs
=====================================
@@ -4,7 +4,9 @@
TypeApplications, StandaloneKindSignatures, GADTs,
FlexibleInstances, UndecidableInstances, UnboxedSums #-}
-- NegativeLiterals: see Note [Fixity of (->)]
+
{-# OPTIONS_HADDOCK print-explicit-runtime-reps #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : GHC.Internal.Types
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/0a2dbd93fbd9d850b15d079f70ac021…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/0a2dbd93fbd9d850b15d079f70ac021…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 9 commits: Implement modifiers syntax.
by Marge Bot (@marge-bot) 08 Apr '26
by Marge Bot (@marge-bot) 08 Apr '26
08 Apr '26
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
b9272bdf by Phil Hazelden at 2026-04-08T16:18:44-04:00
Implement modifiers syntax.
The `%m` syntax of linear types is now accepted in more places, to allow
use by future extensions, though so far linear types is still the only
consumer.
This may break existing code where it
* Uses -XLinearTypes.
* Has code of the form `a %m -> b`, where `m` can't be inferred to be
kind Multiplicity.
The code can be fixed either by adding a kind annotation, or by setting
`-XLinearTypes -XNoModifiers`.
Proposal:
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0370-m…
- - - - -
960a3365 by Zubin Duggal at 2026-04-08T16:18:46-04:00
hadrian: Don't include the package hash in the haddock directory
Since GHC 9.8 and hash_unit_ids, haddock urls have looked like`ghc-9.10.3/doc/html/libraries/base-4.20.2.0-39f9/**/*.html`
The inclusion of the hash makes it hard for downstream non-boot packages to properly link to these files, as the hash is not
part of a standard cabal substitution.
Since we only build one version of each package, we don't need the hash to disambiguate anything, we can just remove it.
Fixes #26635
- - - - -
3748f8c7 by ARATA Mizuki at 2026-04-08T16:18:59-04:00
testsuite: Allow multiple ways to be run by setting multiple command-line options
This patch allows multiple `--test-way`s to take effect, like:
$ hadrian/build test --test-way=normal --test-way=llvm
Previously, only one way was run if the test speed was 'normal' or 'fast'.
Closes #26926
Co-authored-by: sheaf <sam.derbyshire(a)gmail.com>
- - - - -
e2573a9d by Teo Camarasu at 2026-04-08T16:19:02-04:00
doc: improve eventlog-flush-interval flag documentation
We mention the performance cost and how this flag can be turned off.
Resolves #27056
- - - - -
f1102ca5 by Teo Camarasu at 2026-04-08T16:19:02-04:00
docs/user_guide: fix typo
- - - - -
74d77701 by Simon Jakobi at 2026-04-08T16:19:04-04:00
Fix -dsuppress-uniques for free variables in demand signatures
Before: Str=b{sXyZ->S}
With this patch: Str=b{S}
T13143.stderr is updated accordingly.
Fixes #27106.
- - - - -
7a25b9d8 by Simon Jakobi at 2026-04-08T16:19:05-04:00
Documentation fixes for demand signature notation
Fixes #27115.
- - - - -
9eccb354 by Simon Jakobi at 2026-04-08T16:19:06-04:00
Use upsert for non-deleting map updates
Some compiler functions were using `alter`, despite never removing
any entries: they only update an existing entry or insert a new one.
These functions are converted to using `upsert`:
alter :: (Maybe a -> Maybe a) -> Key -> Map a -> Map a
upsert :: (Maybe a -> a) -> Key -> Map a -> Map a
`upsert` variants are also added to APIs of the various Word64Map
wrapper types.
The precedent for this `upsert` operation is in the containers library:
see https://github.com/haskell/containers/pull/1145
Metrics: compile_time/bytes allocated
-------------------------------------
geo. mean: -0.1%
minimum: -0.5%
maximum: +0.0%
Resolves #27140.
- - - - -
4754b1cb by Cheng Shao at 2026-04-08T16:19:07-04:00
testsuite: fix testsuite run for +ipe again
This patch makes the +ipe flavour transformer pass the entire
testsuite again by dropping stdout/stderr checks of certain tests that
are sensitive to stack layout changes with `+ipe`. Related: #26799.
- - - - -
200 changed files:
- compiler/GHC/Cmm/CommonBlockElim.hs
- compiler/GHC/Cmm/Dataflow/Graph.hs
- compiler/GHC/Cmm/Dataflow/Label.hs
- compiler/GHC/CmmToAsm/CFG.hs
- compiler/GHC/Core/Multiplicity.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/Simplify/Iteration.hs
- compiler/GHC/Core/RoughMap.hs
- compiler/GHC/Core/TyCo/Ppr.hs
- compiler/GHC/Core/TyCon/Env.hs
- compiler/GHC/Core/Unify.hs
- compiler/GHC/Data/FastString/Env.hs
- compiler/GHC/Data/Word64Map/Internal.hs
- compiler/GHC/Data/Word64Map/Lazy.hs
- compiler/GHC/Data/Word64Map/Strict.hs
- compiler/GHC/Data/Word64Map/Strict/Internal.hs
- compiler/GHC/Driver/Flags.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Hs/Binds.hs
- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Hs/Instances.hs
- compiler/GHC/Hs/Pat.hs
- compiler/GHC/Hs/Syn/Type.hs
- compiler/GHC/Hs/Type.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/HsToCore/Binds.hs
- compiler/GHC/HsToCore/Docs.hs
- compiler/GHC/HsToCore/Errors/Ppr.hs
- compiler/GHC/HsToCore/Errors/Types.hs
- compiler/GHC/HsToCore/Expr.hs
- 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/Iface/Type.hs
- compiler/GHC/Parser.y
- compiler/GHC/Parser/Errors/Ppr.hs
- compiler/GHC/Parser/Errors/Types.hs
- compiler/GHC/Parser/Lexer.x
- compiler/GHC/Parser/PostProcess.hs
- compiler/GHC/Parser/PostProcess/Haddock.hs
- compiler/GHC/Parser/Types.hs
- compiler/GHC/Rename/Bind.hs
- compiler/GHC/Rename/Expr.hs
- compiler/GHC/Rename/HsType.hs
- compiler/GHC/Rename/Module.hs
- compiler/GHC/Rename/Names.hs
- compiler/GHC/Rename/Pat.hs
- compiler/GHC/Tc/Deriv/Generate.hs
- compiler/GHC/Tc/Errors/Ppr.hs
- compiler/GHC/Tc/Errors/Types.hs
- compiler/GHC/Tc/Gen/App.hs
- compiler/GHC/Tc/Gen/Bind.hs
- compiler/GHC/Tc/Gen/Default.hs
- compiler/GHC/Tc/Gen/Foreign.hs
- compiler/GHC/Tc/Gen/HsType.hs
- compiler/GHC/Tc/Gen/Pat.hs
- compiler/GHC/Tc/Gen/Sig.hs
- compiler/GHC/Tc/Solver/Types.hs
- compiler/GHC/Tc/TyCl.hs
- compiler/GHC/Tc/TyCl/PatSyn.hs
- compiler/GHC/Tc/Types/Evidence.hs
- compiler/GHC/Tc/Utils/Env.hs
- compiler/GHC/Tc/Zonk/Type.hs
- compiler/GHC/ThToHs.hs
- compiler/GHC/Types/Demand.hs
- compiler/GHC/Types/Error/Codes.hs
- compiler/GHC/Types/Hint.hs
- compiler/GHC/Types/Hint/Ppr.hs
- compiler/GHC/Types/Name/Env.hs
- compiler/GHC/Types/Name/Occurrence.hs
- compiler/GHC/Types/Unique/DFM.hs
- compiler/GHC/Types/Unique/FM.hs
- compiler/GHC/Types/Var/Env.hs
- compiler/GHC/Wasm/ControlFlow/FromCmm.hs
- compiler/Language/Haskell/Syntax/Binds.hs
- compiler/Language/Haskell/Syntax/Decls.hs
- compiler/Language/Haskell/Syntax/Decls/Foreign.hs
- compiler/Language/Haskell/Syntax/Expr.hs
- compiler/Language/Haskell/Syntax/Extension.hs
- compiler/Language/Haskell/Syntax/Pat.hs
- compiler/Language/Haskell/Syntax/Type.hs
- docs/users_guide/9.16.1-notes.rst
- docs/users_guide/exts/linear_types.rst
- + docs/users_guide/exts/modifiers.rst
- docs/users_guide/exts/syntax.rst
- docs/users_guide/runtime_control.rst
- docs/users_guide/using-optimisation.rst
- docs/users_guide/using-warnings.rst
- hadrian/bindist/Makefile
- hadrian/src/CommandLine.hs
- hadrian/src/Context.hs
- hadrian/src/Settings/Builders/Cabal.hs
- libraries/ghc-experimental/tests/backtraces/all.T
- libraries/ghc-internal/src/GHC/Internal/LanguageExtensions.hs
- libraries/ghc-internal/tests/stack-annotation/all.T
- testsuite/driver/testlib.py
- testsuite/tests/dmdanal/should_compile/T13143.stderr
- + testsuite/tests/dmdanal/should_compile/T27106.hs
- + testsuite/tests/dmdanal/should_compile/T27106.stderr
- testsuite/tests/dmdanal/should_compile/all.T
- testsuite/tests/driver/T4437.hs
- testsuite/tests/ghc-api/T25121_status.stdout
- testsuite/tests/ghc-api/exactprint/Test20239.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/haddock/should_compile_flag_haddock/haddockLinear.hs
- testsuite/tests/haddock/should_compile_flag_haddock/haddockLinear.stderr
- testsuite/tests/interface-stability/template-haskell-exports.stdout
- testsuite/tests/linear/should_compile/Linear1Rule.hs
- testsuite/tests/linear/should_compile/MultConstructor.hs
- testsuite/tests/linear/should_compile/NonLinearRecord.hs
- testsuite/tests/linear/should_compile/OldList.hs
- testsuite/tests/linear/should_compile/T19400.hs
- testsuite/tests/linear/should_compile/T22546.hs
- testsuite/tests/linear/should_compile/T23025.hs
- testsuite/tests/linear/should_compile/T26332.hs
- testsuite/tests/linear/should_fail/LinearErrOrigin.hs
- testsuite/tests/linear/should_fail/LinearErrOrigin.stderr
- testsuite/tests/linear/should_fail/LinearLet10.hs
- testsuite/tests/linear/should_fail/LinearLet10.stderr
- testsuite/tests/linear/should_fail/LinearPartialSig.hs
- testsuite/tests/linear/should_fail/LinearPartialSig.stderr
- testsuite/tests/linear/should_fail/LinearRole.hs
- + testsuite/tests/linear/should_fail/LinearUnknownModifierKind.hs
- + testsuite/tests/linear/should_fail/LinearUnknownModifierKind.stderr
- testsuite/tests/linear/should_fail/LinearVar.hs
- testsuite/tests/linear/should_fail/LinearVar.stderr
- testsuite/tests/linear/should_fail/T18888_datakinds.hs
- testsuite/tests/linear/should_fail/T18888_datakinds.stderr
- testsuite/tests/linear/should_fail/T19361.hs
- testsuite/tests/linear/should_fail/T19361.stderr
- testsuite/tests/linear/should_fail/T20083.hs
- testsuite/tests/linear/should_fail/T20083.stderr
- testsuite/tests/linear/should_fail/T21278.hs
- testsuite/tests/linear/should_fail/T21278.stderr
- + testsuite/tests/linear/should_fail/TooManyMultiplicities.hs
- + testsuite/tests/linear/should_fail/TooManyMultiplicities.stderr
- + testsuite/tests/linear/should_fail/TooManyMultiplicitiesU.hs
- + testsuite/tests/linear/should_fail/TooManyMultiplicitiesU.stderr
- testsuite/tests/linear/should_fail/all.T
- + testsuite/tests/modifiers/Makefile
- + testsuite/tests/modifiers/should_compile/LinearNoModifiers.hs
- + testsuite/tests/modifiers/should_compile/Makefile
- + testsuite/tests/modifiers/should_compile/Modifier1Linear.hs
- + testsuite/tests/modifiers/should_compile/Modifier1Linear.stderr
- + testsuite/tests/modifiers/should_compile/Modifiers.hs
- + testsuite/tests/modifiers/should_compile/Modifiers.stderr
- + testsuite/tests/modifiers/should_compile/ModifiersSuggestLinear.hs
- + testsuite/tests/modifiers/should_compile/ModifiersSuggestLinear.stderr
- + testsuite/tests/modifiers/should_compile/all.T
- + testsuite/tests/modifiers/should_fail/Makefile
- + testsuite/tests/modifiers/should_fail/ModifiersExprUnexpectedInQuote.hs
- + testsuite/tests/modifiers/should_fail/ModifiersExprUnexpectedInQuote.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersForbiddenHere.hs
- + testsuite/tests/modifiers/should_fail/ModifiersForbiddenHere.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersNoExt.hs
- + testsuite/tests/modifiers/should_fail/ModifiersNoExt.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersUnexpectedInQuote.hs
- + testsuite/tests/modifiers/should_fail/ModifiersUnexpectedInQuote.stderr
- + testsuite/tests/modifiers/should_fail/ModifiersUnknownKind.hs
- + testsuite/tests/modifiers/should_fail/ModifiersUnknownKind.stderr
- + testsuite/tests/modifiers/should_fail/all.T
- testsuite/tests/parser/should_compile/DumpParsedAst.stderr
- testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
- testsuite/tests/parser/should_compile/DumpSemis.stderr
- testsuite/tests/parser/should_compile/KindSigs.stderr
- testsuite/tests/parser/should_compile/T14189.stderr
- testsuite/tests/parser/should_compile/T15323.stderr
- testsuite/tests/parser/should_compile/T18834a.stderr
- testsuite/tests/parser/should_compile/T20452.stderr
- testsuite/tests/parser/should_compile/T23315/T23315.stderr
- testsuite/tests/parser/should_fail/T19928.stderr
- testsuite/tests/printer/Makefile
- + testsuite/tests/printer/PprModifiers.hs
- testsuite/tests/printer/T18791.stderr
- testsuite/tests/printer/Test20315.hs
- testsuite/tests/printer/Test20315.stderr
- testsuite/tests/printer/Test24533.stdout
- testsuite/tests/printer/all.T
- testsuite/tests/rename/should_compile/T22478a.hs
- testsuite/tests/typecheck/no_skolem_info/T20232.hs
- testsuite/tests/typecheck/no_skolem_info/T20232.stderr
- utils/check-exact/ExactPrint.hs
- utils/check-exact/Main.hs
- utils/check-exact/Transform.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/GhcUtils.hs
- utils/haddock/haddock-api/src/Haddock/Interface/Create.hs
- utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
- utils/haddock/haddock-api/src/Haddock/Interface/RenameType.hs
- utils/haddock/haddock-api/src/Haddock/Types.hs
- utils/haddock/html-test/src/LinearTypes.hs
- utils/haddock/latex-test/src/LinearTypes/LinearTypes.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/5207fe461fec323217bcef90e321fd…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/5207fe461fec323217bcef90e321fd…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/spj-reinstallable-base] 20 commits: base: improve error message for Data.Char.chr
by Simon Peyton Jones (@simonpj) 08 Apr '26
by Simon Peyton Jones (@simonpj) 08 Apr '26
08 Apr '26
Simon Peyton Jones pushed to branch wip/spj-reinstallable-base at Glasgow Haskell Compiler / GHC
Commits:
502e6ffe by Andrew Lelechenko at 2026-04-07T04:47:21-04:00
base: improve error message for Data.Char.chr
As per https://github.com/haskell/core-libraries-committee/issues/384
- - - - -
b21bd52e by Simon Peyton Jones at 2026-04-07T04:48:07-04:00
Refactor FunResCtxt a bit
Fixes #27154
- - - - -
7fe84ea5 by Zubin Duggal at 2026-04-07T19:11:52+05:30
compiler: Warn when -finfo-table-map is used with -fllvm
These are currently not supported together.
Fixes #26435
- - - - -
4a45a7da by Matthew Pickering at 2026-04-08T04:37:29-04:00
packaging: correctly propagate build/host/target to bindist configure script
At the moment the host and target which we will produce a compiler for
is fixed at the initial configure time. Therefore we need to persist
the choice made at this time into the installation bindist as well so we
look for the right tools, with the right prefixes at install time.
In the future, we want to provide a bit more control about what kind of
bindist we produce so the logic about what the host/target will have to
be written by hadrian rather than persisted by the configure script. In
particular with cross compilers we want to either build a normal stage 2
cross bindist or a stage 3 bindist, which creates a bindist which has a
native compiler for the target platform.
Fixes #21970
Co-authored-by: Sven Tennie <sven.tennie(a)gmail.com>
- - - - -
b0950df6 by Sven Tennie at 2026-04-08T04:37:29-04:00
Cross --host and --target no longer required for cross (#21970)
We set sane defaults in the configure script. Thus, these paramenters
aren't required any longer.
- - - - -
fef35216 by Sven Tennie at 2026-04-08T04:37:30-04:00
ci: Define USER_CONF_CC_OPTS_STAGE2 for aarch64/mingw
ghc-toolchain doesn't see $CONF_CC_OPTS_STAGE2 when the bindist gets
configured. So, the hack to override the compiler gets lost.
- - - - -
8dd6f453 by Cheng Shao at 2026-04-08T04:38:11-04:00
ghci: use ShortByteString for LookupSymbol/LookupSymbolInDLL/LookupClosure messages
This patch refactors ghci to use `ShortByteString` for
`LookupSymbol`/`LookupSymbolInDLL`/`LookupClosure` messages as the
first part of #27147.
Co-authored-by: Codex <codex(a)openai.com>
- - - - -
371ef200 by Cheng Shao at 2026-04-08T04:38:11-04:00
ghci: use ShortByteString for MkCostCentres message
This patch refactors ghci to use `ShortByteString` for `MkCostCentres`
messages as a first part of #27147. This also considerably lowers the
memory overhead of breakpoints when cost center profiling is enabled.
-------------------------
Metric Decrease:
interpreter_steplocal
-------------------------
Co-authored-by: Codex <codex(a)openai.com>
- - - - -
2fc5d1c6 by Simon Peyton Jones at 2026-04-08T20:34:46+01:00
Major patch to re-engineer known-key names
This big patch implements the New Plan for known-key names,
described in #27013.
Read the big Note [Overview of known-key names] in GHC.Types.Name
Moving more into the new mechanism [skip ci]
DOES NOT COMPILE, just work in progress
More more stuff into the new mechanism
fromString is known-key
Onward
Onward more
Add imports in ghc-internal for known-key names [skip ci]
Add known-key imports for ghc-internal [skip ci]
More [skip ci]
More
Particularly using a proxy for `toList` from the IsList class.
Add Real to known-key names [skip ci]
More....[skip ci]
Lots of Names have moved to new mechanism
BuiltinRules had KnownKeyNameKeys
Start on updating RdrName but incomplete, hence skip ci
Onward [skip ci]
Onward
Added GHC.Tc.Deriv.RdrNames as a new module
Onward
Added -fexclude-known-key-define
Wibble [skip ci]
More
.. forging ahead with KnownOccs
Onward [skip ci]
including renaming GHC.Builtin.Utils to GHC.Builtin
More and more
I think this might actually bootstrap!
- - - - -
ae4176d7 by Simon Peyton Jones at 2026-04-08T20:34:46+01:00
Wibbles [skip ci]
- - - - -
e722f745 by Simon Peyton Jones at 2026-04-08T20:34:46+01:00
Wibbles
- - - - -
902f5300 by Simon Peyton Jones at 2026-04-08T20:34:46+01:00
Wibbles
- - - - -
81327ea8 by Simon Peyton Jones at 2026-04-08T20:34:46+01:00
Wibble check-exact
- - - - -
8e34be0f by Simon Peyton Jones at 2026-04-08T20:34:46+01:00
Wibble
- - - - -
a12a0d4d by Simon Peyton Jones at 2026-04-08T20:34:46+01:00
Update KnownKeyNames
- - - - -
43920106 by Simon Peyton Jones at 2026-04-08T20:34:47+01:00
More
- - - - -
9e2b432b by Simon Peyton Jones at 2026-04-08T20:34:47+01:00
Wibble
- - - - -
1d0e2292 by Simon Peyton Jones at 2026-04-08T20:34:47+01:00
More fixes
- - - - -
3389169e by Simon Peyton Jones at 2026-04-08T20:34:47+01:00
More and more
- - - - -
eb02c841 by Simon Peyton Jones at 2026-04-08T20:34:47+01:00
Renaming
GHC.Builtin.Names --> GHC.Builtin.KnownKeys
GHC.Builtin.RdrNames --> GHC.Builtin.KnownOccs
- - - - -
405 changed files:
- .gitlab/ci.sh
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/jobs.yaml
- compiler/GHC/Builtin/Utils.hs → compiler/GHC/Builtin.hs
- compiler/GHC/Builtin/Names.hs → compiler/GHC/Builtin/KnownKeys.hs
- + compiler/GHC/Builtin/KnownOccs.hs
- compiler/GHC/Builtin/PrimOps.hs
- compiler/GHC/Builtin/PrimOps/Ids.hs
- compiler/GHC/Builtin/Names/TH.hs → compiler/GHC/Builtin/TH.hs
- compiler/GHC/Builtin/Types.hs
- compiler/GHC/Builtin/Types/Literals.hs
- compiler/GHC/Builtin/Types/Prim.hs
- compiler/GHC/ByteCode/Breakpoints.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/DataCon.hs
- compiler/GHC/Core/Lint.hs
- compiler/GHC/Core/Make.hs
- compiler/GHC/Core/Multiplicity.hs
- compiler/GHC/Core/Opt/ConstantFold.hs
- compiler/GHC/Core/Opt/CprAnal.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/OccurAnal.hs
- compiler/GHC/Core/Opt/SetLevels.hs
- compiler/GHC/Core/Opt/Simplify/Iteration.hs
- compiler/GHC/Core/Opt/SpecConstr.hs
- compiler/GHC/Core/Ppr.hs
- compiler/GHC/Core/Predicate.hs
- compiler/GHC/Core/Rules.hs
- compiler/GHC/Core/SimpleOpt.hs
- compiler/GHC/Core/Subst.hs
- compiler/GHC/Core/TyCo/Rep.hs
- compiler/GHC/Core/TyCon.hs
- compiler/GHC/Core/Type.hs
- compiler/GHC/Core/Unfold.hs
- compiler/GHC/Core/Utils.hs
- compiler/GHC/CoreToStg/Prep.hs
- compiler/GHC/Driver/Backpack.hs
- compiler/GHC/Driver/Config/Tidy.hs
- compiler/GHC/Driver/Downsweep.hs
- compiler/GHC/Driver/DynFlags.hs
- compiler/GHC/Driver/Env.hs
- compiler/GHC/Driver/Env/KnotVars.hs
- compiler/GHC/Driver/Flags.hs
- compiler/GHC/Driver/Main.hs
- compiler/GHC/Driver/Pipeline.hs
- compiler/GHC/Driver/Pipeline/Execute.hs
- compiler/GHC/Driver/Plugins.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Hs/Type.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/HsToCore.hs
- compiler/GHC/HsToCore/Arrows.hs
- compiler/GHC/HsToCore/Binds.hs
- compiler/GHC/HsToCore/Breakpoints.hs
- compiler/GHC/HsToCore/Expr.hs
- compiler/GHC/HsToCore/Foreign/C.hs
- compiler/GHC/HsToCore/Foreign/Call.hs
- compiler/GHC/HsToCore/Foreign/JavaScript.hs
- compiler/GHC/HsToCore/Foreign/Wasm.hs
- compiler/GHC/HsToCore/ListComp.hs
- compiler/GHC/HsToCore/Match/Literal.hs
- compiler/GHC/HsToCore/Monad.hs
- compiler/GHC/HsToCore/Pmc/Check.hs
- compiler/GHC/HsToCore/Pmc/Desugar.hs
- compiler/GHC/HsToCore/Pmc/Solver.hs
- compiler/GHC/HsToCore/Pmc/Solver/Types.hs
- compiler/GHC/HsToCore/Quote.hs
- compiler/GHC/HsToCore/Types.hs
- compiler/GHC/HsToCore/Utils.hs
- compiler/GHC/Iface/Binary.hs
- compiler/GHC/Iface/Env.hs
- − compiler/GHC/Iface/Env.hs-boot
- compiler/GHC/Iface/Errors/Ppr.hs
- compiler/GHC/Iface/Errors/Types.hs
- compiler/GHC/Iface/Load.hs
- compiler/GHC/Iface/Syntax.hs
- compiler/GHC/Iface/Tidy.hs
- compiler/GHC/Iface/Type.hs
- compiler/GHC/IfaceToCore.hs
- compiler/GHC/Linker/Loader.hs
- compiler/GHC/Parser.y
- compiler/GHC/Parser/Annotation.hs
- compiler/GHC/Parser/Errors/Ppr.hs
- compiler/GHC/Parser/Header.hs
- compiler/GHC/Parser/PostProcess.hs
- compiler/GHC/Plugins.hs
- compiler/GHC/Rename/Bind.hs
- compiler/GHC/Rename/Env.hs
- compiler/GHC/Rename/Expr.hs
- compiler/GHC/Rename/HsType.hs
- compiler/GHC/Rename/Lit.hs
- compiler/GHC/Rename/Module.hs
- compiler/GHC/Rename/Names.hs
- compiler/GHC/Rename/Pat.hs
- compiler/GHC/Rename/Splice.hs
- compiler/GHC/Rename/Unbound.hs
- compiler/GHC/Rename/Utils.hs
- compiler/GHC/Runtime/Context.hs
- compiler/GHC/Runtime/Eval.hs
- compiler/GHC/Runtime/Interpreter.hs
- compiler/GHC/Runtime/Loader.hs
- compiler/GHC/StgToCmm/Bind.hs
- compiler/GHC/StgToCmm/DataCon.hs
- compiler/GHC/StgToCmm/Env.hs
- compiler/GHC/StgToCmm/Ticky.hs
- compiler/GHC/StgToJS/Apply.hs
- compiler/GHC/StgToJS/Expr.hs
- compiler/GHC/StgToJS/Utils.hs
- compiler/GHC/Tc/Deriv.hs
- compiler/GHC/Tc/Deriv/Functor.hs
- compiler/GHC/Tc/Deriv/Generate.hs
- compiler/GHC/Tc/Deriv/Generics.hs
- compiler/GHC/Tc/Deriv/Infer.hs
- compiler/GHC/Tc/Deriv/Utils.hs
- compiler/GHC/Tc/Errors.hs
- compiler/GHC/Tc/Errors/Hole.hs
- compiler/GHC/Tc/Errors/Ppr.hs
- compiler/GHC/Tc/Gen/App.hs
- compiler/GHC/Tc/Gen/Arrow.hs
- compiler/GHC/Tc/Gen/Bind.hs
- compiler/GHC/Tc/Gen/Default.hs
- compiler/GHC/Tc/Gen/Export.hs
- compiler/GHC/Tc/Gen/Expr.hs
- compiler/GHC/Tc/Gen/Foreign.hs
- compiler/GHC/Tc/Gen/Head.hs
- compiler/GHC/Tc/Gen/HsType.hs
- compiler/GHC/Tc/Gen/Pat.hs
- compiler/GHC/Tc/Gen/Sig.hs
- compiler/GHC/Tc/Gen/Splice.hs
- compiler/GHC/Tc/Instance/Class.hs
- compiler/GHC/Tc/Instance/Typeable.hs
- compiler/GHC/Tc/Module.hs
- compiler/GHC/Tc/Solver/Default.hs
- compiler/GHC/Tc/Solver/Dict.hs
- compiler/GHC/Tc/Solver/InertSet.hs
- compiler/GHC/Tc/Solver/Monad.hs
- compiler/GHC/Tc/TyCl/Build.hs
- compiler/GHC/Tc/TyCl/Instance.hs
- compiler/GHC/Tc/Types.hs
- compiler/GHC/Tc/Types/Constraint.hs
- compiler/GHC/Tc/Types/ErrCtxt.hs
- compiler/GHC/Tc/Types/Evidence.hs
- compiler/GHC/Tc/Types/Origin.hs
- compiler/GHC/Tc/Utils/Concrete.hs
- compiler/GHC/Tc/Utils/Env.hs
- compiler/GHC/Tc/Utils/Instantiate.hs
- compiler/GHC/Tc/Utils/Monad.hs
- compiler/GHC/Tc/Utils/TcMType.hs
- compiler/GHC/Tc/Utils/TcType.hs
- compiler/GHC/Tc/Validity.hs
- compiler/GHC/Tc/Zonk/TcType.hs
- compiler/GHC/Tc/Zonk/Type.hs
- compiler/GHC/ThToHs.hs
- compiler/GHC/Types/DefaultEnv.hs
- compiler/GHC/Types/Error/Codes.hs
- compiler/GHC/Types/Hint.hs
- compiler/GHC/Types/Hint/Ppr.hs
- compiler/GHC/Types/Id/Make.hs
- compiler/GHC/Types/Name.hs
- compiler/GHC/Types/Name/Cache.hs
- compiler/GHC/Types/Name/Ppr.hs
- compiler/GHC/Types/Name/Reader.hs
- compiler/GHC/Types/Unique.hs
- compiler/GHC/Types/Unique/FM.hs
- compiler/GHC/Unit/External.hs
- compiler/GHC/Unit/Module/ModSummary.hs
- compiler/GHC/Unit/State.hs
- compiler/Language/Haskell/Syntax/Expr.hs
- compiler/ghc.cabal.in
- configure.ac
- distrib/configure.ac.in
- docs/users_guide/debug-info.rst
- docs/users_guide/exts/rebindable_syntax.rst
- docs/users_guide/separate_compilation.rst
- ghc/GHCi/UI.hs
- hadrian/cfg/system.config.in
- hadrian/src/Oracles/Setting.hs
- hadrian/src/Rules/Generate.hs
- hadrian/src/Settings/Default.hs
- libraries/base/base.cabal.in
- libraries/base/changelog.md
- libraries/base/src/Control/Applicative.hs
- libraries/base/src/Data/Array/Byte.hs
- libraries/base/src/Data/Bifoldable1.hs
- libraries/base/src/Data/Bool.hs
- libraries/base/src/Data/Complex.hs
- libraries/base/src/Data/Enum.hs
- libraries/base/src/Data/Fixed.hs
- libraries/base/src/Data/Foldable1.hs
- libraries/base/src/Data/Functor/Classes.hs
- libraries/base/src/Data/Functor/Compose.hs
- libraries/base/src/Data/Functor/Product.hs
- libraries/base/src/Data/Functor/Sum.hs
- libraries/base/src/Data/List.hs
- libraries/base/src/Data/List/NubOrdSet.hs
- libraries/base/src/Data/Semigroup.hs
- libraries/base/src/GHC/Base.hs
- libraries/base/src/GHC/Fingerprint.hs
- + libraries/base/src/GHC/KnownKeyNames.hs
- libraries/base/src/GHC/RTS/Flags.hs
- libraries/base/src/GHC/ResponseFile.hs
- libraries/base/src/GHC/Stats.hs
- libraries/base/src/GHC/Weak/Finalize.hs
- libraries/base/src/Prelude.hs
- libraries/base/src/System/Console/GetOpt.hs
- libraries/base/src/System/Exit.hs
- libraries/base/src/System/IO/OS.hs
- libraries/base/src/System/IO/Unsafe.hs
- libraries/base/src/System/Info.hs
- libraries/base/src/System/Timeout.hs
- libraries/base/src/Text/Printf.hs
- libraries/base/tests/enum01.stdout
- libraries/base/tests/enum01.stdout-alpha-dec-osf3
- libraries/base/tests/enum01.stdout-ws-64
- libraries/ghc-internal/ghc-internal.cabal.in
- libraries/ghc-internal/src/GHC/Internal/AllocationLimitHandler.hs
- libraries/ghc-internal/src/GHC/Internal/Arr.hs
- libraries/ghc-internal/src/GHC/Internal/Base.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/Backend/Native.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/BigNat.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/BigNat.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Bignum/Integer.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/Integer.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Bignum/Natural.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/Natural.hs-boot
- libraries/ghc-internal/src/GHC/Internal/ByteOrder.hs
- libraries/ghc-internal/src/GHC/Internal/CString.hs
- libraries/ghc-internal/src/GHC/Internal/Char.hs
- libraries/ghc-internal/src/GHC/Internal/Classes.hs
- libraries/ghc-internal/src/GHC/Internal/Clock.hsc
- libraries/ghc-internal/src/GHC/Internal/ClosureTypes.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/Bound.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/IO.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/Sync.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Arrow.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Category.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Concurrent/MVar.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Exception/Base.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/Fail.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/Fix.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Imp.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/Zip.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Bits.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Data.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Dynamic.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Either.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Foldable.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Functor/Const.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Functor/Identity.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Monoid.hs
- libraries/ghc-internal/src/GHC/Internal/Data/OldList.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Ord.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Proxy.hs
- libraries/ghc-internal/src/GHC/Internal/Data/STRef.hs
- libraries/ghc-internal/src/GHC/Internal/Data/String.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Traversable.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Type/Coercion.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Type/Equality.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Type/Ord.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Typeable/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Unique.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Version.hs
- libraries/ghc-internal/src/GHC/Internal/Debug/Trace.hs
- libraries/ghc-internal/src/GHC/Internal/Enum.hs
- libraries/ghc-internal/src/GHC/Internal/Enum.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Environment.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Control.hs
- libraries/ghc-internal/src/GHC/Internal/Event/EPoll.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/IntVar.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Internal/Types.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Manager.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Poll.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Thread.hs
- libraries/ghc-internal/src/GHC/Internal/Event/TimerManager.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Unique.hs
- libraries/ghc-internal/src/GHC/Internal/Exception.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Context.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Type.hs
- libraries/ghc-internal/src/GHC/Internal/ExecutionStack/Internal.hsc
- libraries/ghc-internal/src/GHC/Internal/Fingerprint.hs
- libraries/ghc-internal/src/GHC/Internal/Fingerprint/Type.hs
- libraries/ghc-internal/src/GHC/Internal/Float.hs
- libraries/ghc-internal/src/GHC/Internal/Float/RealFracMethods.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/C/ConstPtr.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/C/Error.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/C/String.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/C/String/Encoding.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/ForeignPtr/Imp.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Marshal/Alloc.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Marshal/Array.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Marshal/Error.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Marshal/Utils.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Storable.hs
- libraries/ghc-internal/src/GHC/Internal/ForeignPtr.hs
- libraries/ghc-internal/src/GHC/Internal/ForeignSrcLang.hs
- libraries/ghc-internal/src/GHC/Internal/Functor/ZipList.hs
- libraries/ghc-internal/src/GHC/Internal/GHCi/Helpers.hs
- libraries/ghc-internal/src/GHC/Internal/Generics.hs
- libraries/ghc-internal/src/GHC/Internal/Heap/Closures.hs
- libraries/ghc-internal/src/GHC/Internal/Heap/InfoTable.hsc
- libraries/ghc-internal/src/GHC/Internal/Heap/InfoTable/Types.hsc
- libraries/ghc-internal/src/GHC/Internal/Heap/InfoTableProf.hsc
- libraries/ghc-internal/src/GHC/Internal/Heap/ProfInfo/Types.hs
- libraries/ghc-internal/src/GHC/Internal/IO.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Buffer.hs
- libraries/ghc-internal/src/GHC/Internal/IO/BufferedIO.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Device.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/Failure.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/Iconv.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/Types.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Exception.hs
- libraries/ghc-internal/src/GHC/Internal/IO/FD.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/FD.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Internals.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/Common.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/Flock.hsc
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/LinuxOFD.hsc
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Text.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Types.hs
- libraries/ghc-internal/src/GHC/Internal/IO/IOMode.hs
- libraries/ghc-internal/src/GHC/Internal/IO/SubSystem.hs
- libraries/ghc-internal/src/GHC/Internal/IOArray.hs
- libraries/ghc-internal/src/GHC/Internal/InfoProv/Types.hsc
- libraries/ghc-internal/src/GHC/Internal/Int.hs
- libraries/ghc-internal/src/GHC/Internal/IsList.hs
- libraries/ghc-internal/src/GHC/Internal/Ix.hs
- libraries/ghc-internal/src/GHC/Internal/LanguageExtensions.hs
- libraries/ghc-internal/src/GHC/Internal/MVar.hs
- libraries/ghc-internal/src/GHC/Internal/Magic.hs
- libraries/ghc-internal/src/GHC/Internal/Maybe.hs
- libraries/ghc-internal/src/GHC/Internal/Num.hs
- libraries/ghc-internal/src/GHC/Internal/Num.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Numeric.hs
- libraries/ghc-internal/src/GHC/Internal/OverloadedLabels.hs
- libraries/ghc-internal/src/GHC/Internal/Ptr.hs
- libraries/ghc-internal/src/GHC/Internal/RTS/Flags.hsc
- libraries/ghc-internal/src/GHC/Internal/RTS/Flags/Test.hsc
- libraries/ghc-internal/src/GHC/Internal/Read.hs
- libraries/ghc-internal/src/GHC/Internal/Real.hs
- libraries/ghc-internal/src/GHC/Internal/Real.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Records.hs
- libraries/ghc-internal/src/GHC/Internal/ST.hs
- libraries/ghc-internal/src/GHC/Internal/Show.hs
- libraries/ghc-internal/src/GHC/Internal/Stack.hs
- libraries/ghc-internal/src/GHC/Internal/Stack/CCS.hsc
- libraries/ghc-internal/src/GHC/Internal/Stack/CloneStack.hs
- libraries/ghc-internal/src/GHC/Internal/Stack/Decode.hs
- libraries/ghc-internal/src/GHC/Internal/Stack/Types.hs
- libraries/ghc-internal/src/GHC/Internal/StaticPtr.hs
- libraries/ghc-internal/src/GHC/Internal/StaticPtr/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/Stats.hsc
- libraries/ghc-internal/src/GHC/Internal/System/Environment.hs
- libraries/ghc-internal/src/GHC/Internal/System/Environment/Blank.hsc
- libraries/ghc-internal/src/GHC/Internal/System/Environment/ExecutablePath.hsc
- libraries/ghc-internal/src/GHC/Internal/System/IO.hs
- libraries/ghc-internal/src/GHC/Internal/System/IO/Error.hs
- libraries/ghc-internal/src/GHC/Internal/System/Posix/Internals.hs
- libraries/ghc-internal/src/GHC/Internal/TH/Lib.hs
- libraries/ghc-internal/src/GHC/Internal/TH/Lift.hs
- libraries/ghc-internal/src/GHC/Internal/TH/Syntax.hs
- libraries/ghc-internal/src/GHC/Internal/Text/ParserCombinators/ReadP.hs
- libraries/ghc-internal/src/GHC/Internal/Text/Read.hs
- libraries/ghc-internal/src/GHC/Internal/Text/Read/Lex.hs
- libraries/ghc-internal/src/GHC/Internal/TopHandler.hs
- libraries/ghc-internal/src/GHC/Internal/Tuple.hs
- libraries/ghc-internal/src/GHC/Internal/TypeError.hs
- libraries/ghc-internal/src/GHC/Internal/TypeLits.hs
- libraries/ghc-internal/src/GHC/Internal/TypeNats.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Char/DerivedCoreProperties.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Char/UnicodeData/GeneralCategory.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Version.hs
- libraries/ghc-internal/src/GHC/Internal/Unsafe/Coerce.hs
- libraries/ghc-internal/src/GHC/Internal/Weak/Finalize.hs
- libraries/ghc-prim/ghc-prim.cabal
- libraries/ghci/GHCi/Message.hs
- libraries/ghci/GHCi/ObjLink.hs
- libraries/ghci/GHCi/Run.hs
- m4/fptools_set_platform_vars.m4
- m4/ghc_toolchain.m4
- + testsuite/tests/driver/T26435.ghc.stderr
- + testsuite/tests/driver/T26435.hs
- + testsuite/tests/driver/T26435.stdout
- testsuite/tests/driver/all.T
- testsuite/tests/driver/linkwhole/Main.hs
- testsuite/tests/ghc-api/downsweep/PartialDownsweep.hs
- testsuite/tests/ghci/should_run/T18064.script
- testsuite/tests/parser/should_fail/T16270h.hs
- testsuite/tests/rts/KeepCafsMain.hs
- testsuite/tests/th/T26568.stderr
- utils/check-exact/Utils.hs
- utils/haddock/haddock-api/src/Haddock/Convert.hs
- utils/haddock/haddock-api/src/Haddock/Interface.hs
- utils/haddock/haddock-api/src/Haddock/Interface/Create.hs
- utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
- utils/haddock/haddock-api/src/Haddock/Types.hs
- utils/jsffi/dyld.mjs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/89211939e63204398b45cb72e13379…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/89211939e63204398b45cb72e13379…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/spj-reinstallable-base] More and more
by Simon Peyton Jones (@simonpj) 08 Apr '26
by Simon Peyton Jones (@simonpj) 08 Apr '26
08 Apr '26
Simon Peyton Jones pushed to branch wip/spj-reinstallable-base at Glasgow Haskell Compiler / GHC
Commits:
89211939 by Simon Peyton Jones at 2026-04-08T17:45:14+01:00
More and more
- - - - -
10 changed files:
- compiler/GHC/Builtin.hs
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/Tc/Gen/Default.hs
- libraries/base/src/Data/Fixed.hs
- libraries/base/src/GHC/KnownKeyNames.hs
- libraries/base/src/System/Console/GetOpt.hs
- libraries/ghc-internal/src/GHC/Internal/Float.hs
- libraries/ghc-internal/src/GHC/Internal/IO.hs
- libraries/ghc-internal/src/GHC/Internal/Records.hs
- testsuite/tests/th/T26568.stderr
Changes:
=====================================
compiler/GHC/Builtin.hs
=====================================
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
{-
(c) The GRASP/AQUA Project, Glasgow University, 1992-1998
@@ -40,7 +42,9 @@ module GHC.Builtin (
maybeCharLikeCon, maybeIntLikeCon,
-- * Class categories
- isNumericClass, isStandardClass
+ isNumericClass, isStandardClass,
+ numericClassKeys, fractionalClassKeys, standardClassKeys,
+ derivableClassKeys, interactiveClassKeys
) where
@@ -53,8 +57,7 @@ import GHC.Builtin.Types
import GHC.Builtin.Types.Literals ( typeNatTyCons )
import GHC.Builtin.Types.Prim
import GHC.Builtin.TH ( templateHaskellNames, thKnownKeyTable )
-import GHC.Builtin.Names( basicKnownKeyTable, basicKnownKeyNames )
-import GHC.Builtin.Names( charDataConKey, intDataConKey, numericClassKeys, standardClassKeys )
+import GHC.Builtin.Names
import GHC.Core.ConLike ( ConLike(..) )
import GHC.Core.DataCon
@@ -378,6 +381,92 @@ knownVarOccRdrName :: String -> RdrName
knownVarOccRdrName s = knownOccRdrName (mkVarOcc s)
+
+{-
+************************************************************************
+* *
+ Groups of keys
+* *
+************************************************************************
+
+NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
+even though every numeric class has these two as a superclass,
+because the list of ambiguous dictionaries hasn't been simplified.
+-}
+
+numericClassKeys :: [KnownKey]
+numericClassKeys
+ = checkKnownKeys
+ [ numClassKey
+ , realClassKey
+ , integralClassKey
+ ]
+ ++ fractionalClassKeys
+
+fractionalClassKeys :: [KnownKey]
+fractionalClassKeys
+ = checkKnownKeys
+ [ fractionalClassKey
+ , floatingClassKey
+ , realFracClassKey
+ , realFloatClassKey
+ ]
+
+-- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
+-- and are: "classes defined in the Prelude or a standard library"
+standardClassKeys :: [KnownKey]
+standardClassKeys
+ = derivableClassKeys
+ ++ numericClassKeys
+ ++ checkKnownKeys
+ [ randomClassKey, randomGenClassKey
+ , functorClassKey
+ , monadClassKey, monadPlusClassKey, monadFailClassKey
+ , semigroupClassKey, monoidClassKey
+ , isStringClassKey
+ , applicativeClassKey, foldableClassKey
+ , traversableClassKey, alternativeClassKey
+ ]
+
+{-
+@derivableClassKeys@ is also used in checking \tr{deriving} constructs
+(@GHC.Tc.Deriv@).
+-}
+
+derivableClassKeys :: [KnownKey]
+derivableClassKeys
+ = checkKnownKeys [ eqClassKey, ordClassKey, enumClassKey, ixClassKey
+ , boundedClassKey, showClassKey, readClassKey ]
+
+interactiveClassKeys :: [KnownKey]
+-- These are the "interactive classes" that are consulted when doing
+-- defaulting. Does not include Num or IsString, which have special
+-- handling.
+interactiveClassKeys
+ = checkKnownKeys [ showClassKey, eqClassKey, ordClassKey
+ , foldableClassKey, traversableClassKey ]
+
+checkKnownKeys :: [KnownKey] -> [KnownKey]
+-- An assertion check, that checks that these alleged known-keys do
+-- actually appear in the knownKeyTable.
+#ifdef DEBUG
+checkKnownKeys keys
+ | null bad_keys = keys
+ | otherwise = pprPanic "checkKnownKeys" (vcat (map pprKnownKey bad_keys))
+ where
+ bad_keys = filter (not . (`elemUFM` knownKeyUniqMap)) keys
+#else
+checkKnownKeys keys = keys
+#endif
+
+isNumericClass, isStandardClass :: Class -> Bool
+isNumericClass clas = classKey clas `is_elem` numericClassKeys
+isStandardClass clas = classKey clas `is_elem` standardClassKeys
+
+is_elem :: Eq a => a -> [a] -> Bool
+is_elem = isIn "is_X_Class"
+
+
{- *********************************************************************
* *
Wired-in things
@@ -652,18 +741,3 @@ maybeCharLikeCon, maybeIntLikeCon :: DataCon -> Bool
maybeCharLikeCon con = con `hasKey` charDataConKey
maybeIntLikeCon con = con `hasKey` intDataConKey
-{-
-************************************************************************
-* *
- Class predicates
-* *
-************************************************************************
--}
-
-isNumericClass, isStandardClass :: Class -> Bool
-
-isNumericClass clas = classKey clas `is_elem` numericClassKeys
-isStandardClass clas = classKey clas `is_elem` standardClassKeys
-
-is_elem :: Eq a => a -> [a] -> Bool
-is_elem = isIn "is_X_Class"
=====================================
compiler/GHC/Builtin/Names.hs
=====================================
@@ -187,8 +187,6 @@ basicKnownKeyTable
, (mkTcOcc "Foldable", foldableClassKey)
, (mkTcOcc "Traversable", traversableClassKey)
, (mkTcOcc "Bounded", boundedClassKey)
- , (mkTcOcc "Integral", integralClassKey)
- , (mkTcOcc "Real", realClassKey)
, (mkTcOcc "Data", dataClassKey)
, (mkTcOcc "Ix", ixClassKey)
, (mkTcOcc "Alternative", alternativeClassKey)
@@ -216,6 +214,11 @@ basicKnownKeyTable
-- Numeric operations
, (mkTcOcc "Num", numClassKey)
+ , (mkTcOcc "Integral", integralClassKey)
+ , (mkTcOcc "Real", realClassKey)
+ , (mkTcOcc "Fractional", fractionalClassKey)
+ , (mkTcOcc "RealFloat", realFloatClassKey)
+-- , (mkTcOcc "RealFrac", realFracClassKey)
, (mkVarOcc "-", minusClassOpKey)
, (mkVarOcc "negate", negateClassOpKey)
, (mkVarOcc "fromInteger", fromIntegerClassOpKey)
@@ -270,8 +273,7 @@ basicKnownKeyTable
, (mkTcOcc "HasField", hasFieldClassKey)
, (mkVarOcc "fromLabel", fromLabelClassOpKey)
, (mkVarOcc "getField", getFieldClassOpKey)
- -- setField is not yet defined in ghc-internal
- -- , (mkVarOcc "setField", setFieldClassOpKey)
+ , (mkVarOcc "setField", setFieldClassOpKey)
-- FromList
, (mkVarOcc "fromList", fromListClassOpKey)
@@ -2149,61 +2151,3 @@ bignatCompareWordIdKey = mkPreludeMiscIdUnique 693
mkRationalBase2IdKey, mkRationalBase10IdKey :: KnownKey
mkRationalBase2IdKey = mkPreludeMiscIdUnique 700
mkRationalBase10IdKey = mkPreludeMiscIdUnique 701 :: KnownKey
-
-{-
-************************************************************************
-* *
-\subsection[Class-std-groups]{Standard groups of Prelude classes}
-* *
-************************************************************************
-
-NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
-even though every numeric class has these two as a superclass,
-because the list of ambiguous dictionaries hasn't been simplified.
--}
-
-numericClassKeys :: [KnownKey]
-numericClassKeys =
- [ numClassKey
- , realClassKey
- , integralClassKey
- ]
- ++ fractionalClassKeys
-
-fractionalClassKeys :: [KnownKey]
-fractionalClassKeys =
- [ fractionalClassKey
- , floatingClassKey
- , realFracClassKey
- , realFloatClassKey
- ]
-
--- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
--- and are: "classes defined in the Prelude or a standard library"
-standardClassKeys :: [KnownKey]
-standardClassKeys = derivableClassKeys ++ numericClassKeys
- ++ [randomClassKey, randomGenClassKey,
- functorClassKey,
- monadClassKey, monadPlusClassKey, monadFailClassKey,
- semigroupClassKey, monoidClassKey,
- isStringClassKey,
- applicativeClassKey, foldableClassKey,
- traversableClassKey, alternativeClassKey
- ]
-
-{-
-@derivableClassKeys@ is also used in checking \tr{deriving} constructs
-(@GHC.Tc.Deriv@).
--}
-
-derivableClassKeys :: [KnownKey]
-derivableClassKeys
- = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
- boundedClassKey, showClassKey, readClassKey ]
-
-interactiveClassKeys :: [KnownKey]
--- These are the "interactive classes" that are consulted when doing
--- defaulting. Does not include Num or IsString, which have special
--- handling.
-interactiveClassKeys = [ showClassKey, eqClassKey, ordClassKey
- , foldableClassKey, traversableClassKey ]
=====================================
compiler/GHC/Tc/Gen/Default.hs
=====================================
@@ -12,7 +12,9 @@ module GHC.Tc.Gen.Default ( tcDefaultDecls, extendDefaultEnvWithLocalDefaults )
import GHC.Prelude
import GHC.Hs
+import GHC.Builtin( interactiveClassKeys )
import GHC.Builtin.Names
+
import GHC.Core.Class
import GHC.Core.Predicate ( Pred (..), classifyPredType )
=====================================
libraries/base/src/Data/Fixed.hs
=====================================
@@ -4,6 +4,9 @@
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TemplateHaskellQuotes #-}
+{-# OPTIONS_GHC -fno-rebindable-known-key-names #-}
+ -- We are importing Prelude, hence GHC.KnownKeyNames is available
+
-----------------------------------------------------------------------------
-- |
-- Module : Data.Fixed
@@ -87,7 +90,6 @@ module Data.Fixed
) where
import Prelude
-import GHC.KnownKeyNames
import GHC.Internal.Data.Data
import GHC.Internal.TypeLits (KnownNat, natVal)
import GHC.Internal.Read
@@ -95,7 +97,6 @@ import GHC.Internal.Text.ParserCombinators.ReadPrec( ReadPrec, pfail )
import GHC.Internal.Text.Read.Lex
import qualified GHC.Internal.TH.Monad as TH
import qualified GHC.Internal.TH.Lift as TH
-import GHC.Internal.TH.Lift( lift ) -- Unqualified for known-occ names
import Data.Typeable
-- $setup
=====================================
libraries/base/src/GHC/KnownKeyNames.hs
=====================================
@@ -59,7 +59,7 @@ module GHC.KnownKeyNames
, dataToTag#
-- Numbers
- , Num, Integral, Real, Fractional
+ , Num, Integral, Real, Fractional, RealFloat
, (+), (-), (*), negate, fromInteger
, fromRational
, mkRationalBase2, mkRationalBase10
@@ -71,7 +71,7 @@ module GHC.KnownKeyNames
-- Records
, HasField
- , fromLabel, getField
+ , fromLabel, getField, setField
-- Overloaded lists
, IL.fromList, IL.fromListN, IL.toList
@@ -157,13 +157,14 @@ import GHC.Internal.Data.Data
import GHC.Internal.Data.String( fromString )
import GHC.Internal.Data.Foldable( Foldable )
import GHC.Internal.Data.Traversable( Traversable )
+import GHC.Internal.Float( RealFloat )
import GHC.Internal.Real( mkRationalBase2, mkRationalBase10 )
import GHC.Internal.Control.Monad( fail, guard )
import GHC.Internal.Control.Monad.Fix( mfix, loop )
import GHC.Internal.Control.Monad.Zip( mzip )
import GHC.Internal.Control.Arrow( arr, (>>>), first, app, (|||) )
import GHC.Internal.OverloadedLabels( fromLabel )
-import GHC.Internal.Records( HasField, getField )
+import GHC.Internal.Records
import GHC.Internal.CString as CS
import GHC.Internal.TypeError( Unsatisfiable, unsatisfiable )
import GHC.Internal.System.IO( print )
=====================================
libraries/base/src/System/Console/GetOpt.hs
=====================================
@@ -1,5 +1,7 @@
{-# LANGUAGE Safe #-}
+{-# OPTIONS_GHC -fno-rebindable-known-key-names #-}
+ -- We are importing Prelude, hence GHC.KnownKeyNames is available
-----------------------------------------------------------------------------
-- |
-- Module : System.Console.GetOpt
@@ -62,8 +64,7 @@ module System.Console.GetOpt (
-- $example2
) where
-import Prelude hiding( foldr )
-import GHC.KnownKeyNames
+import Prelude
import GHC.Internal.Data.List ( isPrefixOf, find )
-- |What to do with options following non-options
=====================================
libraries/ghc-internal/src/GHC/Internal/Float.hs
=====================================
@@ -9,6 +9,10 @@
{-# LANGUAGE CApiFFI #-}
-- We believe we could deorphan this module, by moving lots of things
-- around, but we haven't got there yet:
+
+{-# OPTIONS_GHC -fdefines-known-key-names #-}
+ -- Defines RealFloat
+
{-# OPTIONS_GHC -Wno-orphans #-}
{-# OPTIONS_HADDOCK not-home #-}
{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
=====================================
libraries/ghc-internal/src/GHC/Internal/IO.hs
=====================================
@@ -50,14 +50,12 @@ module GHC.Internal.IO (
) where
import GHC.Internal.Base
-import GHC.Internal.Magic ( lazy )
import GHC.Internal.Maybe ( Maybe(..) )
import GHC.Internal.Prim (
RealWorld, State#, catch#, getMaskingState#, maskAsyncExceptions#,
maskUninterruptible#, raiseIO#, unmaskAsyncExceptions#,
)
import GHC.Internal.ST
-import GHC.Internal.Types ( Char, IO(..) )
import GHC.Internal.Exception
import GHC.Internal.Exception.Type (NoBacktrace(..), whileHandling, WhileHandling(..), HasExceptionContext, ExceptionWithContext(..))
import GHC.Internal.Show
=====================================
libraries/ghc-internal/src/GHC/Internal/Records.hs
=====================================
@@ -6,6 +6,7 @@
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE Trustworthy #-}
+{-# OPTIONS_GHC -Wno-unused-foralls #-}
{-# OPTIONS_GHC -fdefines-known-key-names #-}
-- Defines GetField
-----------------------------------------------------------------------------
@@ -26,10 +27,11 @@
-----------------------------------------------------------------------------
module GHC.Internal.Records
- ( HasField(..)
+ ( HasField(..), setField
) where
-import GHC.Internal.Types (TYPE, Constraint)
+import GHC.Internal.Types (TYPE, Type, Constraint)
+import GHC.Internal.Err( error )
-- | Constraint representing the fact that the field @x@ belongs to
-- the record type @r@ and has field type @a@. This will be solved
@@ -45,3 +47,13 @@ type HasField :: forall {k} {r_rep} {a_rep} . k -> TYPE r_rep -> TYPE a_rep -> C
class HasField x r a | x r -> a where
-- | Selector function to extract the field from the record.
getField :: r -> a
+
+
+setField :: forall {k} (x::k) (r :: Type) (a :: Type). a -> r -> r
+-- This setField is never used
+-- -XRebindableSyntax is required if -XOverloadedRecordUpdate is enabled
+-- But we still want to export setField from GHC.KnownKeyNames, so that
+-- * We can have a known-key for setField (see uses of setFieldClassOpKey)
+-- * The assertion check that GHC.KnownKeyNames exports every known-key
+-- should not fail
+setField = error "Yikes! setField is not implemented yet"
=====================================
testsuite/tests/th/T26568.stderr
=====================================
@@ -1,7 +1,7 @@
T26568.hs:5:3: error: [GHC-28914]
• Level error:
instance for ‘GHC.Internal.Base.Monad GHC.Internal.TH.Monad.Q’
- is bound at levels {} but used at level -1
+ is bound at level 0 but used at level -1
• In a stmt of a 'do' block: _ <- _
In the expression:
do _ <- _
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/89211939e63204398b45cb72e133796…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/89211939e63204398b45cb72e133796…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/T27135] 31 commits: Streamline expansions using HsExpansion (#25001)
by Peter Trommler (@trommler) 08 Apr '26
by Peter Trommler (@trommler) 08 Apr '26
08 Apr '26
Peter Trommler pushed to branch wip/T27135 at Glasgow Haskell Compiler / GHC
Commits:
58009c14 by Apoorv Ingle at 2026-04-02T09:51:24+01:00
Streamline expansions using HsExpansion (#25001)
Notes added [Error Context Stack] [Typechecking by expansion: overview]
Notes updated Note [Expanding HsDo with XXExprGhcRn] [tcApp: typechecking applications]
-------------------------
Metric Decrease:
T9020
-------------------------
There are 2 key changes:
1. `HsExpand` datatype mediates between expansions
2. Replace `ErrCtxtM` to a simpler `HsCtxt` that does not depend on a `TidyEnv`
This has some consequences detailed below:
1. `HsExpand` datatype mediates between expansions
* Simplifies the implementations of `tcExpr` to work on `XExpr`
* Removes `VACtxt` (and its associated `VAExpansion` and `VACall`) datatype, it is subsumed by simply a `SrcSpan`.
* Removes the function `addHeadCtxt` as it is now mearly setting a location
* The function `tcValArgs` does its own argument number management
* move `splitHsTypes` out of `tcApp`
* Removes special case of tcBody from `tcLambdaMatches`
* Removes special case of `dsExpr` for `ExpandedThingTc`
* Renames `tcMonoExpr` -> `tcMonoLExpr`, `tcMonoExprNC` -> `tcMonoLExpr`
* Renames `EValArg`, `EValArgQL` fields: `ea_ctxt` -> `ea_loc_span` and `eaql_ctx` -> `eaql_loc_span`
* Remove `PopErrCtxt` from `XXExprGhcRn`
* `fun_orig` in tcInstFun depends on the SrcSpan of the head of the application chain (similar to addArgCtxt)
- it references the application chain head if it is user located, or
uses the error context stack as a fallback if it's a generated
location
* Make a new variant `GeneratedSrcSpan` in `SrcSpan` for HIEAst Nodes
- Expressions wrapped around `GeneratedSrcSpan` are ignored and never added to the error context stack
- In Explicit list expansion `fromListN` is wrapped with a `GeneratedSrcSpan` with `GeneratedSrcSpanDetails` field to store the original srcspan
2. Replace `ErrCtxtM` to a simpler `HsCtxt` that does not depend on a `TidyEnv`
* Merge `HsThingRn` to `HsCtxt`
* Landmark Error messages are now just computed on the fly
* Make HsExpandedRn and HsExpandedTc payload a located HsExpr GhcRn
* `HsCtxt` are tidied and zonked at the end right before printing
Co-authored-by: simonpj <simon.peytonjones(a)gmail.com>
- - - - -
bc4b4487 by Zubin Duggal at 2026-04-03T14:22:27-04:00
driver: recognise .dyn_o as a valid object file to link if passed on the command line.
This allows plugins compiled with this suffix to run.
Fixes #24486
- - - - -
5ebb9121 by Simon Jakobi at 2026-04-03T14:23:11-04:00
Add regression test for #16145
Closes #16145.
- - - - -
c1fc1c44 by Simon Peyton Jones at 2026-04-03T19:56:07-04:00
Refactor eta-expansion in Prep
The Prep pass does eta-expansion but I found cases where it was
doing bad things. So I refactored and simplified it quite a bit.
In the new design
* There is no distinction between `rhs` and `body`; in particular,
lambdas can now appear anywhere, rather than just as the RHS of
a let-binding.
* This change led to a significant simplification of Prep, and
a more straightforward explanation of eta-expansion. See the new
Note [Eta expansion]
* The consequences is that CoreToStg needs to handle naked lambdas.
This is very easy; but it does need a unique supply, which forces
some simple refactoring. Having a unique supply to hand is probably
a good thing anyway.
- - - - -
21beda2c by Simon Peyton Jones at 2026-04-03T19:56:07-04:00
Clarify Note [Interesting dictionary arguments]
Ticket #26831 ended up concluding that the code for
GHC.Core.Opt.Specialise.interestingDict was good, but the
commments were a bit inadequate.
This commit improves the comments slightly.
- - - - -
3eaac1f2 by Simon Peyton Jones at 2026-04-03T19:56:07-04:00
Make inlining a bit more eager for overloaded functions
If we have
f d = ... (class-op d x y) ...
we should be eager to inline `f`, because that may change the
higher order call (class-op d x y) into a call to a statically
known function.
See the discussion on #26831.
Even though this does a bit /more/ inlining, compile times
decrease by an average of 0.4%.
Compile time changes:
DsIncompleteRecSel3(normal) 431,786,104 -2.2%
ManyAlternatives(normal) 670,883,768 -1.6%
ManyConstructors(normal) 3,758,493,832 -2.6% GOOD
MultilineStringsPerf(normal) 29,900,576 -2.8%
T14052Type(ghci) 1,047,600,848 -1.2%
T17836(normal) 392,852,328 -5.2%
T18478(normal) 442,785,768 -1.4%
T21839c(normal) 341,536,992 -14.1% GOOD
T3064(normal) 174,086,152 +5.3% BAD
T5631(normal) 506,867,800 +1.0%
hard_hole_fits(normal) 209,530,736 -1.3%
info_table_map_perf(normal) 19,523,093,184 -1.2%
parsing001(normal) 377,810,528 -1.1%
pmcOrPats(normal) 60,075,264 -0.5%
geo. mean -0.4%
minimum -14.1%
maximum +5.3%
Runtime changes
haddock.Cabal(normal) 27,351,988,792 -0.7%
haddock.base(normal) 26,997,212,560 -0.6%
haddock.compiler(normal) 219,531,332,960 -1.0%
Metric Decrease:
LinkableUsage01
ManyConstructors
T17949
T21839c
T13035
TcPlugin_RewritePerf
hard_hole_fits
Metric Increase:
T3064
- - - - -
5cbc2c82 by Matthew Pickering at 2026-04-03T19:57:02-04:00
bytecode: Add magic header/version to bytecode files
In order to avoid confusing errors when using stale interface files (ie
from an older compiler version), we add a simple header/version check
like the one for interface files.
Fixes #27068
- - - - -
d95a1936 by fendor at 2026-04-03T19:57:02-04:00
Add constants for bytecode in-memory buffer size
Introduce a common constant for the default size of the .gbc and
.bytecodelib binary buffer.
The buffer is by default set to 1 MB.
- - - - -
b822c30a by mangoiv at 2026-04-03T19:57:49-04:00
testsuite: filter stderr for static001 on darwin
This reactivates the test on x86_64 darwin as this should have been done
long ago and ignores warnings emitted by ranlib on newer version of the
darwin toolchain since they are benign. (no symbols for stub libraries)
Fixes #27116
- - - - -
28ce1f8a by Andreas Klebinger at 2026-04-03T19:58:44-04:00
Give the Data instance for ModuleName a non-bottom toConstr implementation.
I've also taken the liberty to add Note [Data.Data instances for GHC AST Types]
describing some of the uses of Data.Data I could find.
Fixes #27129
- - - - -
8ca41ffe by mangoiv at 2026-04-03T19:59:30-04:00
issue template: fix add bug label
- - - - -
3981db0c by Sylvain Henry at 2026-04-03T20:00:33-04:00
Add more canned GC functions for common register patterns (#27142)
Based on analysis of heap-check sites across the GHC compiler and Cabal,
the following patterns were not covered by existing canned GC functions
but occurred frequently enough to warrant specialisation:
stg_gc_ppppp -- 5 GC pointers
stg_gc_ip -- unboxed word + GC pointer
stg_gc_pi -- GC pointer + unboxed word
stg_gc_ii -- two unboxed words
stg_gc_bpp -- byte (I8) + two GC pointers
Adding these reduces the fraction of heap-check sites falling back to
the generic GC path from ~1.4% to ~0.4% when compiling GHC itself.
Co-Authored-By: Claude Sonnet 4.6 <noreply(a)anthropic.com>
- - - - -
d17d1435 by Matthew Pickering at 2026-04-03T20:01:19-04:00
Make home unit dependencies stored as sets
Co-authored-by: Wolfgang Jeltsch <wolfgang(a)well-typed.com>
- - - - -
92a97015 by Simon Peyton Jones at 2026-04-05T00:58:57+01:00
Add Invariant (NoTypeShadowing) to Core
This commit addresses #26868, by adding
a new invariant (NoTypeShadowing) to Core.
See Note [No type-shadowing in Core] in GHC.Core
- - - - -
8b5a5020 by Simon Peyton Jones at 2026-04-05T00:58:57+01:00
Major refactor of free-variable functions
For some time we have had two free-variable mechanims for types:
* The "FV" mechanism, embodied in GHC.Utils.FV, which worked OK, but
was fragile where eta-expansion was concerned.
* The TyCoFolder mechanism, using a one-shot EndoOS accumulator
I finally got tired of this and refactored the whole thing, thereby
addressing #27080. Now we have
* `GHC.Types.Var.FV`, which has a composable free-variable result type,
very much in the spirit of the old `FV`, but much more robust.
(It uses the "one shot trick".)
* GHC.Core.TyCo.FVs now has just one technology for free variables.
All this led to a lot of renaming.
There are couple of error-message changes. The change in T18451
makes an already-poor error message even more mysterious. But
it really needs a separate look.
We also now traverse the AST in a different order leading to a different
but still deterministic order for FVs and test output has been adjusted
accordingly.
- - - - -
4bf040c6 by sheaf at 2026-04-05T14:56:29-04:00
Add utility pprTrace_ function
This function is useful for quick debugging, as it can be added to a
where clause to pretty-print debugging information:
fooBar x y
| cond = body1
| otherwise = body2
where
!_ = pprTrace_ "fooBar" $
vcat [ text "x:" <+> ppr x
, text "y:" <+> ppr y
, text "cond:" <+> ppr cond
]
- - - - -
502e6ffe by Andrew Lelechenko at 2026-04-07T04:47:21-04:00
base: improve error message for Data.Char.chr
As per https://github.com/haskell/core-libraries-committee/issues/384
- - - - -
b21bd52e by Simon Peyton Jones at 2026-04-07T04:48:07-04:00
Refactor FunResCtxt a bit
Fixes #27154
- - - - -
7fe84ea5 by Zubin Duggal at 2026-04-07T19:11:52+05:30
compiler: Warn when -finfo-table-map is used with -fllvm
These are currently not supported together.
Fixes #26435
- - - - -
4a45a7da by Matthew Pickering at 2026-04-08T04:37:29-04:00
packaging: correctly propagate build/host/target to bindist configure script
At the moment the host and target which we will produce a compiler for
is fixed at the initial configure time. Therefore we need to persist
the choice made at this time into the installation bindist as well so we
look for the right tools, with the right prefixes at install time.
In the future, we want to provide a bit more control about what kind of
bindist we produce so the logic about what the host/target will have to
be written by hadrian rather than persisted by the configure script. In
particular with cross compilers we want to either build a normal stage 2
cross bindist or a stage 3 bindist, which creates a bindist which has a
native compiler for the target platform.
Fixes #21970
Co-authored-by: Sven Tennie <sven.tennie(a)gmail.com>
- - - - -
b0950df6 by Sven Tennie at 2026-04-08T04:37:29-04:00
Cross --host and --target no longer required for cross (#21970)
We set sane defaults in the configure script. Thus, these paramenters
aren't required any longer.
- - - - -
fef35216 by Sven Tennie at 2026-04-08T04:37:30-04:00
ci: Define USER_CONF_CC_OPTS_STAGE2 for aarch64/mingw
ghc-toolchain doesn't see $CONF_CC_OPTS_STAGE2 when the bindist gets
configured. So, the hack to override the compiler gets lost.
- - - - -
8dd6f453 by Cheng Shao at 2026-04-08T04:38:11-04:00
ghci: use ShortByteString for LookupSymbol/LookupSymbolInDLL/LookupClosure messages
This patch refactors ghci to use `ShortByteString` for
`LookupSymbol`/`LookupSymbolInDLL`/`LookupClosure` messages as the
first part of #27147.
Co-authored-by: Codex <codex(a)openai.com>
- - - - -
371ef200 by Cheng Shao at 2026-04-08T04:38:11-04:00
ghci: use ShortByteString for MkCostCentres message
This patch refactors ghci to use `ShortByteString` for `MkCostCentres`
messages as a first part of #27147. This also considerably lowers the
memory overhead of breakpoints when cost center profiling is enabled.
-------------------------
Metric Decrease:
interpreter_steplocal
-------------------------
Co-authored-by: Codex <codex(a)openai.com>
- - - - -
f27bfc86 by Peter Trommler at 2026-04-08T18:07:35+02:00
Convert to C11 stdatomic.h functions
- - - - -
a4c6ea55 by Peter Trommler at 2026-04-08T18:07:35+02:00
RTS: remove unused RELAXED_ADD_ALWAYS
- - - - -
8ab753b6 by Peter Trommler at 2026-04-08T18:07:35+02:00
Fix references to standard documents
- - - - -
0462a8e7 by Peter Trommler at 2026-04-08T18:07:35+02:00
Require minimum GCC version 4.9
- - - - -
c487b72b by Peter Trommler at 2026-04-08T18:07:35+02:00
Expand all *_ALWAYS macros and remove definitions
- - - - -
007b25f3 by Peter Trommler at 2026-04-08T18:07:35+02:00
Change atomic_add semantics
Avoid computed value not used warning/error.
- - - - -
46ac7e4b by Peter Trommler at 2026-04-08T18:07:35+02:00
Adjust atomics test to test for C11 atomics
- - - - -
275 changed files:
- .gitlab/ci.sh
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/issue_templates/default.md
- .gitlab/jobs.yaml
- compiler/GHC.hs
- compiler/GHC/Builtin/PrimOps.hs
- compiler/GHC/ByteCode/Breakpoints.hs
- compiler/GHC/ByteCode/Serialize.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/FVs.hs
- compiler/GHC/Core/Lint.hs
- compiler/GHC/Core/Opt/Arity.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/SetLevels.hs
- compiler/GHC/Core/Opt/Specialise.hs
- compiler/GHC/Core/Rules.hs
- compiler/GHC/Core/Subst.hs
- compiler/GHC/Core/Tidy.hs
- compiler/GHC/Core/TyCo/FVs.hs
- compiler/GHC/Core/TyCo/Rep.hs
- compiler/GHC/Core/TyCo/Subst.hs
- compiler/GHC/Core/Type.hs
- compiler/GHC/Core/Unfold.hs
- compiler/GHC/Core/Unify.hs
- compiler/GHC/CoreToStg.hs
- compiler/GHC/CoreToStg/Prep.hs
- compiler/GHC/Driver/Main.hs
- compiler/GHC/Driver/Phases.hs
- compiler/GHC/Driver/Plugins.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Hs/DocString.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Hs/Expr.hs-boot
- compiler/GHC/Hs/Instances.hs
- compiler/GHC/Hs/Syn/Type.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/HsToCore/Binds.hs
- compiler/GHC/HsToCore/Breakpoints.hs
- compiler/GHC/HsToCore/Expr.hs
- compiler/GHC/HsToCore/Match.hs
- compiler/GHC/HsToCore/Monad.hs
- compiler/GHC/HsToCore/Pmc.hs
- compiler/GHC/HsToCore/Quote.hs
- compiler/GHC/HsToCore/Ticks.hs
- compiler/GHC/Iface/Ext/Ast.hs
- compiler/GHC/Iface/Ext/Utils.hs
- compiler/GHC/Iface/Syntax.hs
- compiler/GHC/Linker/Loader.hs
- compiler/GHC/Parser/HaddockLex.x
- compiler/GHC/Rename/Bind.hs
- compiler/GHC/Rename/Env.hs
- compiler/GHC/Rename/Expr.hs
- compiler/GHC/Rename/Expr.hs-boot
- compiler/GHC/Rename/HsType.hs
- compiler/GHC/Rename/Lit.hs
- compiler/GHC/Rename/Module.hs
- compiler/GHC/Rename/Names.hs
- compiler/GHC/Rename/Pat.hs
- compiler/GHC/Rename/Splice.hs
- compiler/GHC/Rename/Splice.hs-boot
- compiler/GHC/Rename/Utils.hs
- compiler/GHC/Runtime/Debugger/Breakpoints.hs
- compiler/GHC/Runtime/Interpreter.hs
- compiler/GHC/Stg/Lint.hs
- compiler/GHC/StgToCmm/Heap.hs
- compiler/GHC/Tc/Deriv.hs
- compiler/GHC/Tc/Deriv/Infer.hs
- compiler/GHC/Tc/Deriv/Utils.hs
- compiler/GHC/Tc/Errors.hs
- compiler/GHC/Tc/Errors/Hole.hs
- compiler/GHC/Tc/Errors/Ppr.hs
- compiler/GHC/Tc/Errors/Types.hs
- compiler/GHC/Tc/Gen/App.hs
- compiler/GHC/Tc/Gen/Bind.hs
- compiler/GHC/Tc/Gen/Do.hs
- + compiler/GHC/Tc/Gen/Expand.hs
- compiler/GHC/Tc/Gen/Export.hs
- compiler/GHC/Tc/Gen/Expr.hs
- compiler/GHC/Tc/Gen/Expr.hs-boot
- compiler/GHC/Tc/Gen/Head.hs
- compiler/GHC/Tc/Gen/HsType.hs
- compiler/GHC/Tc/Gen/Match.hs
- compiler/GHC/Tc/Gen/Match.hs-boot
- compiler/GHC/Tc/Gen/Pat.hs
- compiler/GHC/Tc/Gen/Sig.hs
- compiler/GHC/Tc/Gen/Splice.hs
- compiler/GHC/Tc/Instance/Class.hs
- compiler/GHC/Tc/Instance/Family.hs
- compiler/GHC/Tc/Instance/FunDeps.hs
- compiler/GHC/Tc/Module.hs
- compiler/GHC/Tc/Solver/Solve.hs
- compiler/GHC/Tc/TyCl.hs
- compiler/GHC/Tc/TyCl/Class.hs
- compiler/GHC/Tc/TyCl/Instance.hs
- compiler/GHC/Tc/TyCl/PatSyn.hs
- compiler/GHC/Tc/TyCl/Utils.hs
- compiler/GHC/Tc/Types.hs
- compiler/GHC/Tc/Types/BasicTypes.hs
- compiler/GHC/Tc/Types/Constraint.hs
- compiler/GHC/Tc/Types/CtLoc.hs
- compiler/GHC/Tc/Types/ErrCtxt.hs
- compiler/GHC/Tc/Types/Evidence.hs
- compiler/GHC/Tc/Types/LclEnv.hs
- compiler/GHC/Tc/Types/Origin.hs
- compiler/GHC/Tc/Types/Origin.hs-boot
- compiler/GHC/Tc/Utils/Instantiate.hs
- compiler/GHC/Tc/Utils/Monad.hs
- compiler/GHC/Tc/Utils/TcMType.hs
- compiler/GHC/Tc/Utils/TcType.hs
- compiler/GHC/Tc/Utils/TcType.hs-boot
- compiler/GHC/Tc/Utils/Unify.hs
- compiler/GHC/Tc/Validity.hs
- compiler/GHC/Tc/Zonk/TcType.hs
- compiler/GHC/Tc/Zonk/Type.hs
- compiler/GHC/Types/Error.hs
- + compiler/GHC/Types/Error.hs-boot
- compiler/GHC/Types/Hint/Ppr.hs
- compiler/GHC/Types/Id.hs
- compiler/GHC/Types/Id/Info.hs
- compiler/GHC/Types/Name/Reader.hs
- compiler/GHC/Types/Name/Set.hs
- compiler/GHC/Types/SrcLoc.hs
- + compiler/GHC/Types/Var/FV.hs
- compiler/GHC/Types/Var/Set.hs
- compiler/GHC/Unit/Finder.hs
- compiler/GHC/Unit/Home/Graph.hs
- compiler/GHC/Unit/State.hs
- + compiler/GHC/Unit/State.hs-boot
- compiler/GHC/Utils/Binary.hs
- compiler/GHC/Utils/EndoOS.hs
- − compiler/GHC/Utils/FV.hs
- compiler/GHC/Utils/Logger.hs
- compiler/GHC/Utils/Trace.hs
- compiler/Language/Haskell/Syntax/Module/Name.hs
- compiler/ghc.cabal.in
- configure.ac
- distrib/configure.ac.in
- docs/users_guide/debug-info.rst
- ghc/GHCi/UI.hs
- ghc/GHCi/UI/Info.hs
- hadrian/cfg/system.config.in
- hadrian/src/Oracles/Setting.hs
- hadrian/src/Rules/Generate.hs
- hadrian/src/Settings/Default.hs
- libraries/base/changelog.md
- libraries/base/tests/enum01.stdout
- libraries/base/tests/enum01.stdout-alpha-dec-osf3
- libraries/base/tests/enum01.stdout-ws-64
- libraries/ghc-internal/src/GHC/Internal/Char.hs
- libraries/ghci/GHCi/Message.hs
- libraries/ghci/GHCi/ObjLink.hs
- libraries/ghci/GHCi/Run.hs
- m4/fp_cc_supports__atomics.m4
- m4/fp_gcc_version.m4
- m4/fptools_set_platform_vars.m4
- m4/ghc_toolchain.m4
- rts/Capability.h
- rts/HeapStackCheck.cmm
- rts/Interpreter.c
- rts/Proftimer.c
- rts/RtsSymbols.c
- rts/Schedule.c
- rts/Schedule.h
- rts/Timer.c
- rts/include/rts/storage/Block.h
- rts/include/stg/MiscClosures.h
- rts/include/stg/SMP.h
- rts/posix/ticker/Pthread.c
- rts/posix/ticker/TimerFd.c
- rts/prim/atomic.c
- rts/sm/Evac.c
- testsuite/driver/testlib.py
- testsuite/tests/arityanal/should_compile/Arity01.stderr
- testsuite/tests/arityanal/should_compile/Arity05.stderr
- testsuite/tests/arityanal/should_compile/Arity08.stderr
- testsuite/tests/arityanal/should_compile/Arity11.stderr
- testsuite/tests/arityanal/should_compile/Arity14.stderr
- testsuite/tests/count-deps/CountDepsAst.stdout
- testsuite/tests/count-deps/CountDepsParser.stdout
- testsuite/tests/cpranal/should_compile/T18401.stderr
- testsuite/tests/deriving/should_fail/deriving-via-fail4.stderr
- + testsuite/tests/driver/T26435.ghc.stderr
- + testsuite/tests/driver/T26435.hs
- + testsuite/tests/driver/T26435.stdout
- testsuite/tests/driver/all.T
- testsuite/tests/driver/bytecode-object/Makefile
- testsuite/tests/driver/bytecode-object/all.T
- testsuite/tests/driver/linkwhole/Main.hs
- testsuite/tests/ghci/prog-mhu001/prog-mhu001c.stdout
- testsuite/tests/ghci/should_run/T18064.script
- testsuite/tests/indexed-types/should_fail/T2693.stderr
- testsuite/tests/indexed-types/should_fail/T5439.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/base-exports.stdout-ws-32
- testsuite/tests/monadfail/MonadFailErrors.stderr
- testsuite/tests/overloadedrecflds/should_fail/T26480b.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail10.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail11.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail9.stderr
- testsuite/tests/partial-sigs/should_compile/SplicesUsed.stderr
- testsuite/tests/partial-sigs/should_compile/T10403.stderr
- testsuite/tests/partial-sigs/should_compile/T12844.stderr
- testsuite/tests/partial-sigs/should_compile/T15039a.stderr
- testsuite/tests/partial-sigs/should_compile/T15039b.stderr
- testsuite/tests/partial-sigs/should_compile/T15039c.stderr
- testsuite/tests/partial-sigs/should_compile/T15039d.stderr
- testsuite/tests/partial-sigs/should_fail/T10999.stderr
- testsuite/tests/partial-sigs/should_fail/T12634.stderr
- testsuite/tests/plugins/Makefile
- + testsuite/tests/plugins/T24486-plugin/Makefile
- + testsuite/tests/plugins/T24486-plugin/Setup.hs
- + testsuite/tests/plugins/T24486-plugin/T24486-plugin.cabal
- + testsuite/tests/plugins/T24486-plugin/T24486_Plugin.hs
- + testsuite/tests/plugins/T24486.hs
- + testsuite/tests/plugins/T24486_Helper.hs
- testsuite/tests/plugins/all.T
- testsuite/tests/plugins/test-defaulting-plugin.stderr
- testsuite/tests/polykinds/T15789.stderr
- testsuite/tests/polykinds/T18451.stderr
- testsuite/tests/polykinds/T7328.stderr
- testsuite/tests/printer/T17697.stderr
- testsuite/tests/profiling/should_run/callstack001.stdout
- testsuite/tests/rebindable/rebindable6.stderr
- testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr
- testsuite/tests/rts/KeepCafsMain.hs
- testsuite/tests/runghc/Makefile
- + testsuite/tests/runghc/T16145.hs
- + testsuite/tests/runghc/T16145.stdout
- + testsuite/tests/runghc/T16145_aux.hs
- testsuite/tests/runghc/all.T
- testsuite/tests/simplCore/should_compile/DsSpecPragmas.stderr
- testsuite/tests/simplCore/should_compile/T15205.stderr
- testsuite/tests/simplCore/should_compile/T24229a.stderr
- testsuite/tests/simplCore/should_compile/T24229b.stderr
- testsuite/tests/simplCore/should_compile/T24359a.stderr
- testsuite/tests/simplCore/should_compile/T26116.stderr
- testsuite/tests/simplCore/should_compile/T4908.stderr
- testsuite/tests/simplCore/should_compile/spec-inline.stderr
- testsuite/tests/typecheck/no_skolem_info/T20063.stderr
- + testsuite/tests/typecheck/should_compile/ExpansionQLIm.hs
- testsuite/tests/typecheck/should_compile/T14590.stderr
- testsuite/tests/typecheck/should_compile/T25180.stderr
- testsuite/tests/typecheck/should_compile/all.T
- testsuite/tests/typecheck/should_compile/free_monad_hole_fits.stderr
- testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr
- testsuite/tests/typecheck/should_fail/DoExpansion1.stderr
- testsuite/tests/typecheck/should_fail/DoExpansion2.stderr
- testsuite/tests/typecheck/should_fail/T10971d.stderr
- testsuite/tests/typecheck/should_fail/T12589.stderr
- testsuite/tests/typecheck/should_fail/T13311.stderr
- testsuite/tests/typecheck/should_fail/T17773.stderr
- testsuite/tests/typecheck/should_fail/T2846b.stderr
- testsuite/tests/typecheck/should_fail/T3323.stderr
- testsuite/tests/typecheck/should_fail/T3613.stderr
- testsuite/tests/typecheck/should_fail/T6069.stderr
- testsuite/tests/typecheck/should_fail/T7851.stderr
- testsuite/tests/typecheck/should_fail/T7857.stderr
- testsuite/tests/typecheck/should_fail/T8603.stderr
- testsuite/tests/typecheck/should_fail/T9612.stderr
- testsuite/tests/typecheck/should_fail/tcfail102.stderr
- testsuite/tests/typecheck/should_fail/tcfail128.stderr
- testsuite/tests/typecheck/should_fail/tcfail140.stderr
- testsuite/tests/typecheck/should_fail/tcfail181.stderr
- testsuite/tests/wasm/should_run/control-flow/LoadCmmGroup.hs
- utils/check-exact/ExactPrint.hs
- utils/check-exact/Parsers.hs
- utils/check-exact/Transform.hs
- utils/check-exact/Utils.hs
- utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Parser.hs
- utils/haddock/haddock-api/src/Haddock/Backends/Xhtml/Utils.hs
- utils/haddock/haddock-api/src/Haddock/GhcUtils.hs
- utils/jsffi/dyld.mjs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e4467d7a472fca5b5b1be003d7e54e…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e4467d7a472fca5b5b1be003d7e54e…
You're receiving this email because of your account on gitlab.haskell.org.
1
0