[Git][ghc/ghc][wip/mangoiv/ci-stages] fixup! ci: build and test stage
by Magnus (@MangoIV) 11 Aug '26
by Magnus (@MangoIV) 11 Aug '26
11 Aug '26
Magnus pushed to branch wip/mangoiv/ci-stages at Glasgow Haskell Compiler / GHC
Commits:
2124a9f0 by mangoiv at 2026-08-11T14:48:06+02:00
fixup! ci: build and test stage
- - - - -
2 changed files:
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/jobs.yaml
Changes:
=====================================
.gitlab/generate-ci/gen_ci.hs
=====================================
@@ -869,10 +869,12 @@ job arch opsys buildConfig =
jobTestScript
| Windows <- opsys
= [ "bash .gitlab/ci.sh setup"
+ , "bash .gitlab/ci.sh configure" -- configure needs to be run because hadrian gets its config like that
, "bash .gitlab/ci.sh test_hadrian" ]
| otherwise
= [ "sudo chown ghc:ghc -R ." | Linux {} <- [opsys]] ++
[ ".gitlab/ci.sh setup"
+ , ".gitlab/ci.sh configure"
, ".gitlab/ci.sh test_hadrian" ]
jobBuildScript
=====================================
.gitlab/jobs.yaml
=====================================
@@ -107,6 +107,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -233,6 +234,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -355,6 +357,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -476,6 +479,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -700,6 +704,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -781,6 +786,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -984,6 +990,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1044,6 +1051,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1166,6 +1174,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1288,6 +1297,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1409,6 +1419,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1530,6 +1541,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1655,6 +1667,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1783,6 +1796,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -1907,6 +1921,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2030,6 +2045,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2257,6 +2273,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2339,6 +2356,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2545,6 +2563,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2606,6 +2625,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2730,6 +2750,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2854,6 +2875,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -2977,6 +2999,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3100,6 +3123,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3229,6 +3253,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3361,6 +3386,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3489,6 +3515,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3614,6 +3641,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3739,6 +3767,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3866,6 +3895,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -3995,6 +4025,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -4124,6 +4155,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -4253,6 +4285,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -4441,6 +4474,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -4502,6 +4536,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -4625,6 +4660,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -4751,6 +4787,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -4877,6 +4914,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5000,6 +5038,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5124,6 +5163,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5248,6 +5288,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5309,6 +5350,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5435,6 +5477,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5561,6 +5604,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5746,6 +5790,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5869,6 +5914,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -5994,6 +6040,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6057,6 +6104,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6180,6 +6228,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6366,6 +6415,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6428,6 +6478,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6677,6 +6728,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6740,6 +6792,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6801,6 +6854,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -6924,6 +6978,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7047,6 +7102,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7173,6 +7229,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7299,6 +7356,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7417,6 +7475,7 @@
],
"script": [
"bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
"bash .gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7540,6 +7599,7 @@
],
"script": [
"bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
"bash .gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7672,6 +7732,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7802,6 +7863,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -7928,6 +7990,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8053,6 +8116,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8178,6 +8242,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8304,6 +8369,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8430,6 +8496,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8555,6 +8622,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8680,6 +8748,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8811,6 +8880,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -8945,6 +9015,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -9075,6 +9146,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -9202,6 +9274,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -9329,6 +9402,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -9518,6 +9592,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -9580,6 +9655,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -9705,6 +9781,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -9830,6 +9907,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10018,6 +10096,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10144,6 +10223,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10207,6 +10287,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10332,6 +10413,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10457,6 +10539,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10582,6 +10665,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10702,6 +10786,7 @@
],
"script": [
"bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
"bash .gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10827,6 +10912,7 @@
],
"script": [
"bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
"bash .gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -10961,6 +11047,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11091,6 +11178,7 @@
],
"script": [
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11217,6 +11305,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11340,6 +11429,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11463,6 +11553,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11588,6 +11679,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11717,6 +11809,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11846,6 +11939,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -11973,6 +12067,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12158,6 +12253,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12218,6 +12314,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12339,6 +12436,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12463,6 +12561,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12587,6 +12686,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12710,6 +12810,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12832,6 +12933,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -12954,6 +13056,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13014,6 +13117,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13138,6 +13242,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13262,6 +13367,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13444,6 +13550,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13565,6 +13672,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13690,6 +13798,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13752,6 +13861,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -13873,6 +13983,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14056,6 +14167,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14117,6 +14229,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14362,6 +14475,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14424,6 +14538,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14484,6 +14599,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14605,6 +14721,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14726,6 +14843,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14850,6 +14968,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -14974,6 +15093,7 @@
"script": [
"sudo chown ghc:ghc -R .",
".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
".gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -15090,6 +15210,7 @@
],
"script": [
"bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
"bash .gitlab/ci.sh test_hadrian"
],
"stage": "testing",
@@ -15211,6 +15332,7 @@
],
"script": [
"bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
"bash .gitlab/ci.sh test_hadrian"
],
"stage": "testing",
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/2124a9f0870f352f0faa68936b9dedc…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/2124a9f0870f352f0faa68936b9dedc…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 3 commits: Major patch to re-engineer known-key names
by Marge Bot (@marge-bot) 11 Aug '26
by Marge Bot (@marge-bot) 11 Aug '26
11 Aug '26
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
6b46de72 by Simon Peyton Jones at 2026-08-11T08:43:56-04: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
Some things had to be reworked slightly to accomodate the new known-keys
design. A significant one was the generation of auxiliary KindRep
bindings, which was greatly simplified. Note [Grand plan for Typeable]
was updated accordingly. Another example: GHC.Internal.CString was
merged into GHC.Internal.Types.
Co-authored-by: Rodrigo Mesquita <rodrigo.m.mesquita(a)gmail.com>
The couple hundreds of hours spent here by Rodrigo were sponsored by Well-Typed
Metrics: compile_time/bytes allocated
-------------------------------------
Baseline
Test Metric value New value Change
------------------------------------------------------------------------------------------
MultiComponentModules100(normal) ghc/alloc 24,312,779,672 24,990,470,432 +2.8% BAD
MultiComponentModulesRecomp(normal) ghc/alloc 601,924,960 621,884,888 +3.3% BAD
MultiComponentModulesRecomp100(normal) ghc/alloc 11,884,065,432 12,531,373,704 +5.4% BAD
MultiLayerModules(normal) ghc/alloc 3,861,537,072 3,706,919,512 -4.0% GOOD
T13701(normal) ghc/alloc 3,517,246,392 3,237,179,616 -8.0% GOOD
T13820(normal) ghc/alloc 28,961,056 29,663,208 +2.4% BAD
T14697(normal) ghc/alloc 472,044,184 443,550,048 -6.0% GOOD
T18140(normal) ghc/alloc 47,905,664 49,115,808 +2.5% BAD
T4801(normal) ghc/alloc 269,339,096 263,432,040 -2.2% GOOD
T783(normal) ghc/alloc 341,112,672 333,339,952 -2.3% GOOD
hard_hole_fits(normal) ghc/alloc 222,164,728 213,433,808 -3.9% GOOD
mhu-perf(normal) ghc/alloc 49,011,440 46,706,280 -4.7% GOOD
geo. mean +0.1%
minimum -8.0%
maximum +5.4%
All performance regressions were investigated in depth. The surviving
ones:
- MultiComponentModules100, MultiComponentModulesRecomp100,
MultiComponentModulesRecomp regresses because existing bugs that make
an additional implicit edge do too much redundant work: #27053 and #27461
- T13820, T18140, T10547, T13035 regress because we load an additional
interface and associated Names for GHC.Essentials.
-------------------------
Metric Decrease:
MultiLayerModules
T13379
T13701
T14697
T26989
T4801
T783
hard_hole_fits
mhu-perf
size_hello_obj
Metric Increase:
LinkableUsage01
LinkableUsage02
MultiComponentModules100
MultiComponentModulesRecomp
MultiComponentModulesRecomp100
T10547
T13035
T13820
T18140
T18698a
T18698b
T20049
-------------------------
Bumps submodule binary
Closes #27013
- - - - -
bdf1d09d by sheaf at 2026-08-11T08:43:57-04:00
Allow GHC.Essentials to be hidden
This commit overhauls several aspects of the known entity handling,
in order to allow GHC.Essentials to be hidden without a proliferation
of special cases in the compiler.
The main contribution is to introduce the 'UnresolvedImport' datatype
which cleans up a lot of ad-hoc handling relating to 'ModSummary',
fixing #27603. This allows us to reduce duplication, e.g. by having
Backpack reuse 'mkUnresolvedImports' instead of replicating the
"add implicit imports" logic. It also makes it easier to avoid
undesirable edge cases (such as making sure that the Template Haskell
'reifyModule' function does not leak the implicit GHC.Essentials import).
In particular, the infamous 'findImportedModuleWithIsBoot' is now simply
'resolveImport', taking a single 'UnresolvedImport' and resolving it
to a 'FindResult' (usually a 'Module').
Other changes:
- Cache the result of looking up GHC.Essentials (in TcM and DsM
environments) to avoid redundant work.
This reduces allocations on LinkableUsage01 and hard_hole_fits.
- Properly look up known entities for StaticPointers like we do for
other known entities everywhere else. This allows e.g. modules in
ghc-internal to use -XStaticPointers.
- When using multiple home units, we are now careful to handle the
situation in which we may have multiple GHC.Essentials modules
around. See the new tests under 'driver/multipleHomeUnits'.
- - - - -
50c54f28 by Alan Zimmerman at 2026-08-11T08:44:21-04:00
EPA: Remove al_trailing from AnnList
It was not being used
- - - - -
804 changed files:
- + changelog.d/refactor-known-names
- compiler/GHC.hs
- + compiler/GHC/Builtin.hs
- + compiler/GHC/Builtin/KnownKeys.hs
- + compiler/GHC/Builtin/KnownOccs.hs
- + compiler/GHC/Builtin/Modules.hs
- − compiler/GHC/Builtin/Names.hs
- − compiler/GHC/Builtin/Names/TH.hs
- compiler/GHC/Builtin/PrimOps.hs
- compiler/GHC/Builtin/PrimOps/Casts.hs
- compiler/GHC/Builtin/PrimOps/Ids.hs
- + compiler/GHC/Builtin/TH.hs
- compiler/GHC/Builtin/Uniques.hs
- compiler/GHC/Builtin/Uniques.hs-boot
- − compiler/GHC/Builtin/Utils.hs
- + compiler/GHC/Builtin/WiredIn/Ids.hs
- compiler/GHC/Builtin/Types/Prim.hs → compiler/GHC/Builtin/WiredIn/Prim.hs
- compiler/GHC/Builtin/Types/Literals.hs → compiler/GHC/Builtin/WiredIn/TypeLits.hs
- compiler/GHC/Builtin/Types.hs → compiler/GHC/Builtin/WiredIn/Types.hs
- compiler/GHC/Builtin/Types.hs-boot → compiler/GHC/Builtin/WiredIn/Types.hs-boot
- compiler/GHC/ByteCode/Asm.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/DataCon.hs
- compiler/GHC/Core/FVs.hs
- compiler/GHC/Core/FamInstEnv.hs
- compiler/GHC/Core/Lint.hs
- compiler/GHC/Core/Make.hs
- compiler/GHC/Core/Multiplicity.hs
- compiler/GHC/Core/Opt/Arity.hs
- compiler/GHC/Core/Opt/ConstantFold.hs
- compiler/GHC/Core/Opt/CprAnal.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/LiberateCase.hs
- compiler/GHC/Core/Opt/OccurAnal.hs
- compiler/GHC/Core/Opt/SetLevels.hs
- compiler/GHC/Core/Opt/Simplify/Env.hs
- compiler/GHC/Core/Opt/Simplify/Iteration.hs
- compiler/GHC/Core/Opt/SpecConstr.hs
- compiler/GHC/Core/Opt/Specialise.hs
- compiler/GHC/Core/Opt/WorkWrap/Utils.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/FVs.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/Unify.hs
- compiler/GHC/Core/Utils.hs
- compiler/GHC/CoreToIface.hs
- compiler/GHC/CoreToStg.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/Env/Types.hs
- compiler/GHC/Driver/Flags.hs
- compiler/GHC/Driver/Main/Hsc.hs
- compiler/GHC/Driver/Main/Passes.hs
- compiler/GHC/Driver/Make.hs
- compiler/GHC/Driver/MakeFile.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/ImpExp.hs
- compiler/GHC/Hs/Lit.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.hs
- compiler/GHC/HsToCore/Arrows.hs
- compiler/GHC/HsToCore/Binds.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/Utils.hs
- compiler/GHC/HsToCore/Foreign/Wasm.hs
- compiler/GHC/HsToCore/ListComp.hs
- compiler/GHC/HsToCore/Match.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/Ppr.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/Usage.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/Ext/Ast.hs
- compiler/GHC/Iface/Load.hs
- compiler/GHC/Iface/Make.hs
- compiler/GHC/Iface/Recomp.hs
- compiler/GHC/Iface/Syntax.hs
- compiler/GHC/Iface/Tidy.hs
- compiler/GHC/Iface/Type.hs
- compiler/GHC/IfaceToCore.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/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/Debugger.hs
- compiler/GHC/Runtime/Eval.hs
- compiler/GHC/Runtime/Heap/Inspect.hs
- compiler/GHC/Runtime/Interpreter.hs
- compiler/GHC/Runtime/Loader.hs
- compiler/GHC/Stg/BcPrep.hs
- compiler/GHC/Stg/Unarise.hs
- compiler/GHC/StgToByteCode.hs
- compiler/GHC/StgToCmm/Bind.hs
- compiler/GHC/StgToCmm/DataCon.hs
- compiler/GHC/StgToCmm/Env.hs
- compiler/GHC/StgToCmm/Foreign.hs
- compiler/GHC/StgToCmm/Lit.hs
- compiler/GHC/StgToCmm/Ticky.hs
- compiler/GHC/StgToJS/Apply.hs
- compiler/GHC/StgToJS/Arg.hs
- compiler/GHC/StgToJS/Expr.hs
- compiler/GHC/StgToJS/FFI.hs
- compiler/GHC/StgToJS/Linker/Utils.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/Match.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/FunDeps.hs
- compiler/GHC/Tc/Instance/Typeable.hs
- compiler/GHC/Tc/Module.hs
- compiler/GHC/Tc/Plugin.hs
- compiler/GHC/Tc/Solver.hs
- compiler/GHC/Tc/Solver/Default.hs
- compiler/GHC/Tc/Solver/Dict.hs
- compiler/GHC/Tc/Solver/FunDeps.hs
- compiler/GHC/Tc/Solver/InertSet.hs
- compiler/GHC/Tc/Solver/Monad.hs
- compiler/GHC/Tc/Solver/Rewrite.hs
- compiler/GHC/Tc/TyCl.hs
- compiler/GHC/Tc/TyCl/Build.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/Constraint.hs
- compiler/GHC/Tc/Types/Evidence.hs
- compiler/GHC/Tc/Types/LclEnv.hs
- compiler/GHC/Tc/Types/Origin.hs
- compiler/GHC/Tc/Utils/Backpack.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/Utils/Unify.hs
- compiler/GHC/Tc/Validity.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/Literal.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/RepType.hs
- compiler/GHC/Types/TyThing.hs
- compiler/GHC/Types/Unique.hs
- compiler/GHC/Types/Unique/FM.hs
- + compiler/GHC/Types/UnresolvedImport.hs
- compiler/GHC/Types/Var.hs
- compiler/GHC/Unit.hs
- compiler/GHC/Unit/External.hs
- compiler/GHC/Unit/External/Index.hs
- compiler/GHC/Unit/External/ModuleOrigin.hs
- compiler/GHC/Unit/External/Providers.hs
- compiler/GHC/Unit/Finder.hs
- compiler/GHC/Unit/Finder/Types.hs
- compiler/GHC/Unit/Module/Deps.hs
- compiler/GHC/Unit/Module/ModSummary.hs
- compiler/GHC/Unit/State.hs
- compiler/GHC/Unit/Types.hs
- compiler/GHC/Utils/Binary.hs
- − compiler/GHC/Utils/Binary/Typeable.hs
- compiler/Language/Haskell/Syntax/Expr.hs
- compiler/ghc.cabal.in
- docs/users_guide/separate_compilation.rst
- ghc/GHCi/UI.hs
- ghc/GHCi/UI/Monad.hs
- ghc/Main.hs
- libraries/base/base.cabal.in
- libraries/base/src/Control/Applicative.hs
- libraries/base/src/Control/Concurrent.hs
- libraries/base/src/Control/Concurrent/Chan.hs
- libraries/base/src/Control/Concurrent/QSem.hs
- libraries/base/src/Control/Concurrent/QSemN.hs
- libraries/base/src/Data/Array/Byte.hs
- libraries/base/src/Data/Bifoldable.hs
- libraries/base/src/Data/Bifoldable1.hs
- libraries/base/src/Data/Bifunctor.hs
- libraries/base/src/Data/Bitraversable.hs
- libraries/base/src/Data/Bool.hs
- libraries/base/src/Data/Complex.hs
- libraries/base/src/Data/Data.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/Contravariant.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/NonEmpty.hs
- libraries/base/src/Data/List/NubOrdSet.hs
- libraries/base/src/Data/Semigroup.hs
- libraries/base/src/Data/Version.hs
- libraries/base/src/GHC/Base.hs
- libraries/base/src/GHC/ByteOrder.hs
- + libraries/base/src/GHC/Essentials.hs
- libraries/base/src/GHC/Exts.hs
- libraries/base/src/GHC/Fingerprint.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/Numeric.hs
- libraries/base/src/Prelude.hs
- libraries/base/src/System/CPUTime/Posix/ClockGetTime.hsc
- libraries/base/src/System/CPUTime/Posix/RUsage.hsc
- libraries/base/src/System/CPUTime/Posix/Times.hsc
- libraries/base/src/System/CPUTime/Unsupported.hs
- libraries/base/src/System/Console/GetOpt.hs
- libraries/base/src/System/Exit.hs
- libraries/base/src/System/IO.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/src/Text/Read.hs
- libraries/base/src/Text/Show/Functions.hs
- libraries/binary
- libraries/ghc-experimental/src/Data/Sum/Experimental.hs
- libraries/ghc-experimental/src/Data/Tuple/Experimental.hs
- libraries/ghc-experimental/src/GHC/Profiling/Eras.hs
- libraries/ghc-experimental/src/Prelude/Experimental.hs
- libraries/ghc-internal/codepages/MakeTable.hs
- libraries/ghc-internal/ghc-internal.cabal.in
- libraries/ghc-internal/include/RtsIfaceSymbols.h
- libraries/ghc-internal/src/GHC/Internal/AllocationLimitHandler.hs
- libraries/ghc-internal/src/GHC/Internal/Arr.hs
- libraries/ghc-internal/src/GHC/Internal/ArrayArray.hs
- libraries/ghc-internal/src/GHC/Internal/Base.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/Backend.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/Backend/GMP.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/Bignum/Primitives.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/WordArray.hs
- libraries/ghc-internal/src/GHC/Internal/Bits.hs
- 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/Classes/IP.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/POSIX.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/POSIX/Const.hsc
- libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/Sync.hs
- libraries/ghc-internal/src/GHC/Internal/ConsoleHandler.hsc
- 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.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/IO/Class.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Imp.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Lazy.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Lazy/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/Coerce.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/Function.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Functor.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/Functor/Utils.hs
- libraries/ghc-internal/src/GHC/Internal/Data/IORef.hs
- libraries/ghc-internal/src/GHC/Internal/Data/List.hs
- libraries/ghc-internal/src/GHC/Internal/Data/List/NonEmpty.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Maybe.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Monoid.hs
- libraries/ghc-internal/src/GHC/Internal/Data/NonEmpty.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/Semigroup/Internal.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/Tuple.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Type/Bool.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.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/Data/Void.hs
- libraries/ghc-internal/src/GHC/Internal/Debug/Trace.hs
- libraries/ghc-internal/src/GHC/Internal/Desugar.hs
- libraries/ghc-internal/src/GHC/Internal/Encoding/UTF8.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/Err.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Arr.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Array.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/IntTable.hs
- 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/KQueue.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Manager.hs
- libraries/ghc-internal/src/GHC/Internal/Event/PSQ.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/TimeOut.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/Event/Windows.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/Clock.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/ConsoleEvent.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/FFI.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/ManagedThreadPool.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/Thread.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/Backtrace.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Exception/Context.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Context.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Exception/Type.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Type.hs-boot
- libraries/ghc-internal/src/GHC/Internal/ExecutionStack.hs
- libraries/ghc-internal/src/GHC/Internal/ExecutionStack/Internal.hsc
- libraries/ghc-internal/src/GHC/Internal/Exts.hs
- 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/ConversionUtils.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/C/Types.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/Pool.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Marshal/Utils.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Ptr.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.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/Constants.hsc
- 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.hs-boot
- 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/CodePage.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/CodePage/API.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/CodePage/Table.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/Latin1.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/Types.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/UTF16.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/UTF32.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/UTF8.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Exception.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Exception.hs-boot
- 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.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/Lock/NoOp.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/Windows.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/Handle/Types.hs-boot
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Windows.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/IO/Unsafe.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Windows/Encoding.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Windows/Handle.hsc
- libraries/ghc-internal/src/GHC/Internal/IOArray.hs
- libraries/ghc-internal/src/GHC/Internal/IORef.hs
- libraries/ghc-internal/src/GHC/Internal/InfoProv.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/JS/Foreign/Callback.hs
- libraries/ghc-internal/src/GHC/Internal/JS/Prim.hs
- libraries/ghc-internal/src/GHC/Internal/LanguageExtensions.hs
- libraries/ghc-internal/src/GHC/Internal/Lexeme.hs
- libraries/ghc-internal/src/GHC/Internal/List.hs
- libraries/ghc-internal/src/GHC/Internal/MVar.hs
- libraries/ghc-internal/src/GHC/Internal/Magic.hs
- libraries/ghc-internal/src/GHC/Internal/Magic/Dict.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/Pack.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/Exception.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/Ext.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/Panic.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/PtrEq.hs
- libraries/ghc-internal/src/GHC/Internal/Profiling.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/STM.hs
- libraries/ghc-internal/src/GHC/Internal/STRef.hs
- libraries/ghc-internal/src/GHC/Internal/Show.hs
- libraries/ghc-internal/src/GHC/Internal/Stable.hs
- libraries/ghc-internal/src/GHC/Internal/StableName.hs
- libraries/ghc-internal/src/GHC/Internal/Stack.hs
- libraries/ghc-internal/src/GHC/Internal/Stack.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Stack/Annotation.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/Constants.hsc
- libraries/ghc-internal/src/GHC/Internal/Stack/ConstantsProf.hsc
- 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/Storable.hs
- 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/Error.hs
- libraries/ghc-internal/src/GHC/Internal/System/Mem.hs
- libraries/ghc-internal/src/GHC/Internal/System/Posix/Internals.hs
- libraries/ghc-internal/src/GHC/Internal/System/Posix/Types.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/Monad.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/ParserCombinators/ReadPrec.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/Type/Reflection.hs
- libraries/ghc-internal/src/GHC/Internal/Type/Reflection/Unsafe.hs
- libraries/ghc-internal/src/GHC/Internal/TypeError.hs
- libraries/ghc-internal/src/GHC/Internal/TypeLits.hs
- libraries/ghc-internal/src/GHC/Internal/TypeLits/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/TypeNats.hs
- libraries/ghc-internal/src/GHC/Internal/TypeNats/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/Types.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Bits.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/Char/UnicodeData/SimpleLowerCaseMapping.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Char/UnicodeData/SimpleTitleCaseMapping.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Char/UnicodeData/SimpleUpperCaseMapping.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/Wasm/Prim/Conc.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Conc/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Exports.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Imports.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Types.hs
- libraries/ghc-internal/src/GHC/Internal/Weak.hs
- libraries/ghc-internal/src/GHC/Internal/Weak/Finalize.hs
- libraries/ghc-internal/src/GHC/Internal/Windows.hs
- libraries/ghc-internal/src/GHC/Internal/Word.hs
- libraries/ghc-internal/tools/ucd2haskell/exe/UCD2Haskell/ModuleGenerators.hs
- libraries/ghc-prim/Dummy.hs
- libraries/ghc-prim/ghc-prim.cabal
- libraries/template-haskell/Language/Haskell/TH/Lib.hs
- linters/lint-codes/LintCodes/Static.hs
- rts/include/rts/RtsToHsIface.h
- testsuite/driver/testlib.py
- testsuite/driver/testutil.py
- testsuite/tests/ado/T13242a.stderr
- testsuite/tests/annotations/should_fail/annfail10.stderr
- testsuite/tests/backpack/cabal/bkpcabal07/Makefile
- testsuite/tests/backpack/should_compile/T20396.stderr
- testsuite/tests/backpack/should_fail/bkpfail17.stderr
- testsuite/tests/cabal/T12485/Makefile
- + testsuite/tests/cabal/T27013a/Makefile
- + testsuite/tests/cabal/T27013a/Setup.hs
- + testsuite/tests/cabal/T27013a/all.T
- + testsuite/tests/cabal/T27013a/composition.cabal
- + testsuite/tests/cabal/T27013a/src/Data/Composition.hs
- + testsuite/tests/cabal/T27013d/Composition.hs
- + testsuite/tests/cabal/T27013d/Makefile
- + testsuite/tests/cabal/T27013d/T27013d.stdout
- + testsuite/tests/cabal/T27013d/all.T
- testsuite/tests/callarity/unittest/CallArity1.hs
- testsuite/tests/corelint/LintEtaExpand.hs
- testsuite/tests/corelint/T21115b.stderr
- testsuite/tests/corelint/T27374.hs
- testsuite/tests/count-deps/CountDepsParser.stdout
- testsuite/tests/deSugar/should_compile/T13208.stdout
- testsuite/tests/deSugar/should_compile/T16615.stderr
- testsuite/tests/deSugar/should_compile/T2431.stderr
- testsuite/tests/default/DefaultImportFail01.stderr
- testsuite/tests/default/DefaultImportFail02.stderr
- testsuite/tests/default/DefaultImportFail03.stderr
- testsuite/tests/default/DefaultImportFail04.stderr
- testsuite/tests/default/DefaultImportFail05.stderr
- testsuite/tests/default/DefaultImportFail07.stderr
- testsuite/tests/default/T25775.stderr
- testsuite/tests/deriving/should_compile/T14682.stderr
- testsuite/tests/deriving/should_compile/T20496.stderr
- testsuite/tests/diagnostic-codes/codes.stdout
- + testsuite/tests/driver/T27013b/Makefile
- + testsuite/tests/driver/T27013b/T27013b.stdout
- + testsuite/tests/driver/T27013b/X.hs
- + testsuite/tests/driver/T27013b/all.T
- + testsuite/tests/driver/T27013c/Makefile
- + testsuite/tests/driver/T27013c/T27013c.stdout
- + testsuite/tests/driver/T27013c/X.hs
- + testsuite/tests/driver/T27013c/all.T
- + testsuite/tests/driver/T27013e/T27013e.hs
- + testsuite/tests/driver/T27013e/T27013e.stderr
- + testsuite/tests/driver/T27013e/all.T
- + testsuite/tests/driver/T27013f/T27013f.hs
- + testsuite/tests/driver/T27013f/T27013f.stderr
- + testsuite/tests/driver/T27013f/all.T
- + testsuite/tests/driver/T27013g/T27013g.hs
- + testsuite/tests/driver/T27013g/all.T
- + testsuite/tests/driver/T27013h/GHC/Essentials.hs
- + testsuite/tests/driver/T27013h/T27013h.stderr
- + testsuite/tests/driver/T27013h/all.T
- + testsuite/tests/driver/T27013h/unitT27013h
- + testsuite/tests/driver/T27013i/T27013i.hs
- + testsuite/tests/driver/T27013i/T27013i.stderr
- + testsuite/tests/driver/T27013i/all.T
- testsuite/tests/driver/T3007/A/Internal.hs
- testsuite/tests/driver/T3007/Makefile
- testsuite/tests/driver/make-prim/Makefile
- testsuite/tests/driver/multipleHomeUnits/Makefile
- testsuite/tests/driver/multipleHomeUnits/all.T
- + testsuite/tests/driver/multipleHomeUnits/essentials-home/GHC/Essentials.hs
- + testsuite/tests/driver/multipleHomeUnits/essentials-order-base/B.hs
- + testsuite/tests/driver/multipleHomeUnits/essentials-order-user/U.hs
- + testsuite/tests/driver/multipleHomeUnits/essentials-user/M.hs
- testsuite/tests/driver/multipleHomeUnits/multipleHomeUnitsModuleVisibility.stderr
- + testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_essentials.stdout
- + testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_essentials_order.stderr
- + testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_essentials_recomp.stdout
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsHome
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsHomeHidden
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsOrderBase
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsOrderUser
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsUser
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsUserHidden
- testsuite/tests/driver/recomp24656/Makefile
- testsuite/tests/driver/recomp24656/recomp24656.stdout
- + testsuite/tests/ghc-api/EssentialsCoverage.hs
- testsuite/tests/ghc-api/T8628.hs
- testsuite/tests/ghc-api/all.T
- testsuite/tests/ghc-api/downsweep/PartialDownsweep.hs
- testsuite/tests/ghc-api/exactprint/T22919.stderr
- testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr
- testsuite/tests/ghci.debugger/scripts/break006.stderr
- testsuite/tests/ghci.debugger/scripts/print019.stderr
- testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout
- testsuite/tests/ghci/scripts/T4175.stdout
- testsuite/tests/ghci/scripts/all.T
- testsuite/tests/ghci/scripts/ghci064.stdout
- testsuite/tests/hiefile/should_run/T23120.stdout
- testsuite/tests/iface/IfaceSharingIfaceType.hs
- testsuite/tests/iface/IfaceSharingName.hs
- testsuite/tests/indexed-types/should_fail/T12522a.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/ghc-experimental-exports.stdout
- testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32
- testsuite/tests/interface-stability/ghc-prim-exports.stdout
- testsuite/tests/interface-stability/ghc-prim-exports.stdout-mingw32
- testsuite/tests/interface-stability/template-haskell-exports.stdout
- testsuite/tests/javascript/Makefile
- testsuite/tests/javascript/T24495.hs
- testsuite/tests/module/mod185.stderr
- testsuite/tests/numeric/should_compile/T14170.stdout
- testsuite/tests/numeric/should_compile/T14465.stdout
- testsuite/tests/numeric/should_compile/T7116.stdout
- testsuite/tests/overloadedlists/should_fail/overloadedlistsfail01.stderr
- testsuite/tests/package/all.T
- testsuite/tests/parser/should_compile/DumpParsedAst.stderr
- testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr
- testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
- testsuite/tests/parser/should_compile/DumpSemis.stderr
- testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr
- testsuite/tests/parser/should_compile/KindSigs.stderr
- testsuite/tests/parser/should_compile/T14189.stderr
- testsuite/tests/parser/should_compile/T15279.stderr
- testsuite/tests/parser/should_compile/T20718.stderr
- testsuite/tests/parser/should_compile/T20846.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail10.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail11.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail13.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail8.stderr
- testsuite/tests/parser/should_fail/T16270h.hs
- testsuite/tests/partial-sigs/should_fail/NamedWildcardsNotInMonotype.stderr
- testsuite/tests/patsyn/should_fail/T26465.stderr
- testsuite/tests/perf/should_run/ByteCodeAsm.hs
- testsuite/tests/plugins/defaulting-plugin/DefaultInterference.hs
- testsuite/tests/plugins/defaulting-plugin/DefaultInvalid.hs
- testsuite/tests/plugins/defaulting-plugin/DefaultMultiParam.hs
- testsuite/tests/plugins/plugins09.stdout
- testsuite/tests/plugins/plugins10.stdout
- testsuite/tests/plugins/plugins11.stdout
- testsuite/tests/plugins/simple-plugin/Simple/ReplacePlugin.hs
- testsuite/tests/plugins/static-plugins.stdout
- testsuite/tests/printer/Test20297.stdout
- testsuite/tests/printer/Test24533.stdout
- testsuite/tests/profiling/should_run/callstack001.stdout
- testsuite/tests/profiling/should_run/callstack002.stderr
- testsuite/tests/profiling/should_run/callstack002.stdout
- testsuite/tests/rename/should_compile/T3103/Foreign/Ptr.hs
- testsuite/tests/rename/should_compile/T3103/GHC/Base.lhs
- testsuite/tests/rename/should_compile/T3103/GHC/Word.hs
- testsuite/tests/rename/should_compile/T3103/test.T
- testsuite/tests/roles/should_compile/Roles1.stderr
- testsuite/tests/roles/should_compile/Roles13.stderr
- testsuite/tests/roles/should_compile/Roles14.stderr
- testsuite/tests/roles/should_compile/Roles2.stderr
- testsuite/tests/roles/should_compile/Roles3.stderr
- testsuite/tests/roles/should_compile/Roles4.stderr
- testsuite/tests/roles/should_compile/T8958.stderr
- testsuite/tests/simplCore/should_compile/OpaqueNoCastWW.stderr
- testsuite/tests/simplCore/should_compile/T13543.stderr
- testsuite/tests/simplCore/should_compile/T16038/T16038.stdout
- testsuite/tests/simplCore/should_compile/T3717.stderr
- testsuite/tests/simplCore/should_compile/T3772.stdout
- testsuite/tests/simplCore/should_compile/T4908.stderr
- testsuite/tests/simplCore/should_compile/T4930.stderr
- testsuite/tests/simplCore/should_compile/T7360.stderr
- testsuite/tests/simplCore/should_compile/T8274.stdout
- testsuite/tests/simplCore/should_compile/T9400.stderr
- testsuite/tests/simplCore/should_compile/noinline01.stderr
- testsuite/tests/simplCore/should_compile/par01.stderr
- testsuite/tests/simplCore/should_compile/rule2.stderr
- testsuite/tests/simplCore/should_compile/str-rules.hs
- testsuite/tests/tcplugins/ArgsPlugin.hs
- testsuite/tests/tcplugins/EmitWantedPlugin.hs
- testsuite/tests/tcplugins/RewritePlugin.hs
- testsuite/tests/tcplugins/T26395_Plugin.hs
- testsuite/tests/tcplugins/TyFamPlugin.hs
- testsuite/tests/th/T14741.hs
- testsuite/tests/th/T21547.stderr
- testsuite/tests/th/T26568.stderr
- + testsuite/tests/th/T27013th.hs
- testsuite/tests/th/TH_Roles2.stderr
- + testsuite/tests/th/TH_pragmaSpecOld.hs
- + testsuite/tests/th/TH_pragmaSpecOld.stderr
- testsuite/tests/th/all.T
- testsuite/tests/typecheck/should_compile/T13032.stderr
- testsuite/tests/typecheck/should_compile/T14273.stderr
- testsuite/tests/typecheck/should_compile/T18406b.stderr
- testsuite/tests/typecheck/should_compile/T18529.stderr
- testsuite/tests/typecheck/should_compile/holes.stderr
- testsuite/tests/typecheck/should_compile/holes2.stderr
- testsuite/tests/typecheck/should_compile/holes3.stderr
- testsuite/tests/typecheck/should_compile/subsumption_sort_hole_fits.stderr
- testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr
- testsuite/tests/typecheck/should_fail/T12921.stderr
- testsuite/tests/typecheck/should_fail/T14884.stderr
- testsuite/tests/typecheck/should_fail/T15883b.stderr
- testsuite/tests/typecheck/should_fail/T15883c.stderr
- testsuite/tests/typecheck/should_fail/T15883d.stderr
- testsuite/tests/typecheck/should_fail/T21130.stderr
- testsuite/tests/typecheck/should_fail/T3323.stderr
- testsuite/tests/typecheck/should_fail/T5095.stderr
- testsuite/tests/typecheck/should_fail/T7279.stderr
- testsuite/tests/typecheck/should_fail/TcStaticPointersFail02.stderr
- testsuite/tests/typecheck/should_fail/TyAppPat_PatternBindingExistential.stderr
- testsuite/tests/typecheck/should_fail/tcfail072.stderr
- testsuite/tests/typecheck/should_fail/tcfail097.stderr
- testsuite/tests/typecheck/should_fail/tcfail133.stderr
- testsuite/tests/typecheck/should_run/T22510.stdout
- testsuite/tests/unboxedsums/UbxSumLevPoly.hs
- testsuite/tests/unboxedsums/unboxedsums_unit_tests.hs
- testsuite/tests/warnings/should_compile/DerivingTypeable.stderr
- utils/check-exact/ExactPrint.hs
- utils/check-exact/Main.hs
- utils/check-exact/Transform.hs
- utils/check-exact/Utils.hs
- utils/genprimopcode/Main.hs
- utils/haddock/haddock-api/src/Haddock/Convert.hs
- utils/haddock/haddock-api/src/Haddock/GhcUtils.hs
- utils/haddock/haddock-api/src/Haddock/Interface.hs
- utils/haddock/haddock-api/src/Haddock/Interface/AttachInstances.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
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/f745717659eb2c2dce9845e94d788f…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/f745717659eb2c2dce9845e94d788f…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/mangoiv/ci-stages] fixup! ci: build and test stage
by Magnus (@MangoIV) 11 Aug '26
by Magnus (@MangoIV) 11 Aug '26
11 Aug '26
Magnus pushed to branch wip/mangoiv/ci-stages at Glasgow Haskell Compiler / GHC
Commits:
a0a1bd8c by mangoiv at 2026-08-11T13:57:53+02:00
fixup! ci: build and test stage
- - - - -
1 changed file:
- .gitlab/generate-ci/gen_ci.hs
Changes:
=====================================
.gitlab/generate-ci/gen_ci.hs
=====================================
@@ -869,10 +869,12 @@ job arch opsys buildConfig =
jobTestScript
| Windows <- opsys
= [ "bash .gitlab/ci.sh setup"
+ , "bash .gitlab/ci.sh configure" -- configure needs to be run because hadrian gets its config like that
, "bash .gitlab/ci.sh test_hadrian" ]
| otherwise
= [ "sudo chown ghc:ghc -R ." | Linux {} <- [opsys]] ++
[ ".gitlab/ci.sh setup"
+ , ".gitlab/ci.sh configure"
, ".gitlab/ci.sh test_hadrian" ]
jobBuildScript
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a0a1bd8ce6d6416ea9eecb1fdac859e…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a0a1bd8ce6d6416ea9eecb1fdac859e…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/mangoiv/ci-stages] fixup! ci: build and test stage
by Magnus (@MangoIV) 11 Aug '26
by Magnus (@MangoIV) 11 Aug '26
11 Aug '26
Magnus pushed to branch wip/mangoiv/ci-stages at Glasgow Haskell Compiler / GHC
Commits:
c9784937 by mangoiv at 2026-08-11T12:30:57+02:00
fixup! ci: build and test stage
- - - - -
1 changed file:
- .gitlab-ci.yml
Changes:
=====================================
.gitlab-ci.yml
=====================================
@@ -448,6 +448,7 @@ lint-submods-branch:
hadrian-ghc-in-ghci:
stage: quick-build
+ needs: []
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb13:$DOCKER_REV"
before_script:
# workaround for docker permissions
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/c97849375f1982ad52addeffd190cd1…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/c97849375f1982ad52addeffd190cd1…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/mangoiv/ci-stages] fixup! ci: build and test stage
by Magnus (@MangoIV) 11 Aug '26
by Magnus (@MangoIV) 11 Aug '26
11 Aug '26
Magnus pushed to branch wip/mangoiv/ci-stages at Glasgow Haskell Compiler / GHC
Commits:
ad393e1e by mangoiv at 2026-08-11T12:17:05+02:00
fixup! ci: build and test stage
- - - - -
2 changed files:
- .gitlab-ci.yml
- .gitlab/ci.sh
Changes:
=====================================
.gitlab-ci.yml
=====================================
@@ -448,10 +448,6 @@ lint-submods-branch:
hadrian-ghc-in-ghci:
stage: quick-build
- needs:
- - job: lint-linters
- - job: lint-submods
- optional: true
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb13:$DOCKER_REV"
before_script:
# workaround for docker permissions
=====================================
.gitlab/ci.sh
=====================================
@@ -619,7 +619,7 @@ function make_install_destdir() {
# install the binary distribution in directory $1 to $2.
function install_bindist() {
- start_section install-bindist "Install bindist"
+ start_section install-bindist "Install bindist ($1 -> $2)"
case "${CONFIGURE_WRAPPER:-}" in
emconfigure) source "$EMSDK/emsdk_env.sh" ;;
*) ;;
@@ -648,7 +648,26 @@ function install_bindist() {
end_section install-bindist
}
+function find_bindist_tar() {
+ local tar_files
+ tar_files=( *ghc*.tar.xz )
+ if [[ ${#tar_files[@]} -gt 0 ]]; then
+ bindist_tar="${tar_files[0]}"
+ else
+ unset bindist_tar
+ fi
+}
+
function test_hadrian() {
+
+ find_bindist_tar
+ dist_dir="_build/bindist"
+
+ if [ -n "$bindist_tar" ]; then
+ mkdir -p "$dist_dir"
+ tar -xf "$bindist_tar" -C "$dist_dir"
+ fi
+
check_msys2_deps _build/stage1/bin/ghc --version
check_release_build
@@ -680,7 +699,7 @@ function test_hadrian() {
elif [ -n "${CROSS_EMULATOR:-}" ] && [[ "${CROSS_TARGET:-}" != *"wasm"* ]]; then
local instdir="$TOP/_build/install"
local test_compiler="$instdir/bin/${cross_prefix}ghc$exe"
- install_bindist _build/bindist/ghc-*/ "$instdir"
+ install_bindist $dist_dir/ghc-*/ "$instdir"
echo 'main = putStrLn "hello world"' > expected
run "$test_compiler" -package ghc "$TOP/.gitlab/hello.hs" -o hello
@@ -714,7 +733,7 @@ function test_hadrian() {
else
local instdir="$TOP/_build/install"
local test_compiler="$instdir/bin/${cross_prefix}ghc$exe"
- install_bindist _build/bindist/ghc-*/ "$instdir"
+ install_bindist $dist_dir/ghc-*/ "$instdir"
if [[ "${CI_JOB_NAME}" != *"windows"* ]] && [ -z "${CROSS_TARGET:-}" ]
then
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/ad393e1eed0cfa0df3edcb181507219…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/ad393e1eed0cfa0df3edcb181507219…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 3 commits: Major patch to re-engineer known-key names
by Marge Bot (@marge-bot) 11 Aug '26
by Marge Bot (@marge-bot) 11 Aug '26
11 Aug '26
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
2d10a983 by Simon Peyton Jones at 2026-08-11T05:32:26-04: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
Some things had to be reworked slightly to accomodate the new known-keys
design. A significant one was the generation of auxiliary KindRep
bindings, which was greatly simplified. Note [Grand plan for Typeable]
was updated accordingly. Another example: GHC.Internal.CString was
merged into GHC.Internal.Types.
Co-authored-by: Rodrigo Mesquita <rodrigo.m.mesquita(a)gmail.com>
The couple hundreds of hours spent here by Rodrigo were sponsored by Well-Typed
Metrics: compile_time/bytes allocated
-------------------------------------
Baseline
Test Metric value New value Change
------------------------------------------------------------------------------------------
MultiComponentModules100(normal) ghc/alloc 24,312,779,672 24,990,470,432 +2.8% BAD
MultiComponentModulesRecomp(normal) ghc/alloc 601,924,960 621,884,888 +3.3% BAD
MultiComponentModulesRecomp100(normal) ghc/alloc 11,884,065,432 12,531,373,704 +5.4% BAD
MultiLayerModules(normal) ghc/alloc 3,861,537,072 3,706,919,512 -4.0% GOOD
T13701(normal) ghc/alloc 3,517,246,392 3,237,179,616 -8.0% GOOD
T13820(normal) ghc/alloc 28,961,056 29,663,208 +2.4% BAD
T14697(normal) ghc/alloc 472,044,184 443,550,048 -6.0% GOOD
T18140(normal) ghc/alloc 47,905,664 49,115,808 +2.5% BAD
T4801(normal) ghc/alloc 269,339,096 263,432,040 -2.2% GOOD
T783(normal) ghc/alloc 341,112,672 333,339,952 -2.3% GOOD
hard_hole_fits(normal) ghc/alloc 222,164,728 213,433,808 -3.9% GOOD
mhu-perf(normal) ghc/alloc 49,011,440 46,706,280 -4.7% GOOD
geo. mean +0.1%
minimum -8.0%
maximum +5.4%
All performance regressions were investigated in depth. The surviving
ones:
- MultiComponentModules100, MultiComponentModulesRecomp100,
MultiComponentModulesRecomp regresses because existing bugs that make
an additional implicit edge do too much redundant work: #27053 and #27461
- T13820, T18140, T10547, T13035 regress because we load an additional
interface and associated Names for GHC.Essentials.
-------------------------
Metric Decrease:
MultiLayerModules
T13379
T13701
T14697
T26989
T4801
T783
hard_hole_fits
mhu-perf
size_hello_obj
Metric Increase:
LinkableUsage01
LinkableUsage02
MultiComponentModules100
MultiComponentModulesRecomp
MultiComponentModulesRecomp100
T10547
T13035
T13820
T18140
T18698a
T18698b
T20049
-------------------------
Bumps submodule binary
Closes #27013
- - - - -
e1d6ddbc by sheaf at 2026-08-11T05:32:26-04:00
Allow GHC.Essentials to be hidden
This commit overhauls several aspects of the known entity handling,
in order to allow GHC.Essentials to be hidden without a proliferation
of special cases in the compiler.
The main contribution is to introduce the 'UnresolvedImport' datatype
which cleans up a lot of ad-hoc handling relating to 'ModSummary',
fixing #27603. This allows us to reduce duplication, e.g. by having
Backpack reuse 'mkUnresolvedImports' instead of replicating the
"add implicit imports" logic. It also makes it easier to avoid
undesirable edge cases (such as making sure that the Template Haskell
'reifyModule' function does not leak the implicit GHC.Essentials import).
In particular, the infamous 'findImportedModuleWithIsBoot' is now simply
'resolveImport', taking a single 'UnresolvedImport' and resolving it
to a 'FindResult' (usually a 'Module').
Other changes:
- Cache the result of looking up GHC.Essentials (in TcM and DsM
environments) to avoid redundant work.
This reduces allocations on LinkableUsage01 and hard_hole_fits.
- Properly look up known entities for StaticPointers like we do for
other known entities everywhere else. This allows e.g. modules in
ghc-internal to use -XStaticPointers.
- When using multiple home units, we are now careful to handle the
situation in which we may have multiple GHC.Essentials modules
around. See the new tests under 'driver/multipleHomeUnits'.
- - - - -
f7457176 by Wolfgang Jeltsch at 2026-08-11T05:32:37-04:00
Add support for textual output of bytecode file content
- - - - -
807 changed files:
- + changelog.d/refactor-known-names
- + changelog.d/show-byte-code
- compiler/GHC.hs
- + compiler/GHC/Builtin.hs
- + compiler/GHC/Builtin/KnownKeys.hs
- + compiler/GHC/Builtin/KnownOccs.hs
- + compiler/GHC/Builtin/Modules.hs
- − compiler/GHC/Builtin/Names.hs
- − compiler/GHC/Builtin/Names/TH.hs
- compiler/GHC/Builtin/PrimOps.hs
- compiler/GHC/Builtin/PrimOps/Casts.hs
- compiler/GHC/Builtin/PrimOps/Ids.hs
- + compiler/GHC/Builtin/TH.hs
- compiler/GHC/Builtin/Uniques.hs
- compiler/GHC/Builtin/Uniques.hs-boot
- − compiler/GHC/Builtin/Utils.hs
- + compiler/GHC/Builtin/WiredIn/Ids.hs
- compiler/GHC/Builtin/Types/Prim.hs → compiler/GHC/Builtin/WiredIn/Prim.hs
- compiler/GHC/Builtin/Types/Literals.hs → compiler/GHC/Builtin/WiredIn/TypeLits.hs
- compiler/GHC/Builtin/Types.hs → compiler/GHC/Builtin/WiredIn/Types.hs
- compiler/GHC/Builtin/Types.hs-boot → compiler/GHC/Builtin/WiredIn/Types.hs-boot
- compiler/GHC/ByteCode/Asm.hs
- compiler/GHC/ByteCode/Serialize.hs
- + compiler/GHC/ByteCode/Show.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/DataCon.hs
- compiler/GHC/Core/FVs.hs
- compiler/GHC/Core/FamInstEnv.hs
- compiler/GHC/Core/Lint.hs
- compiler/GHC/Core/Make.hs
- compiler/GHC/Core/Multiplicity.hs
- compiler/GHC/Core/Opt/Arity.hs
- compiler/GHC/Core/Opt/ConstantFold.hs
- compiler/GHC/Core/Opt/CprAnal.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/LiberateCase.hs
- compiler/GHC/Core/Opt/OccurAnal.hs
- compiler/GHC/Core/Opt/SetLevels.hs
- compiler/GHC/Core/Opt/Simplify/Env.hs
- compiler/GHC/Core/Opt/Simplify/Iteration.hs
- compiler/GHC/Core/Opt/SpecConstr.hs
- compiler/GHC/Core/Opt/Specialise.hs
- compiler/GHC/Core/Opt/WorkWrap/Utils.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/FVs.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/Unify.hs
- compiler/GHC/Core/Utils.hs
- compiler/GHC/CoreToIface.hs
- compiler/GHC/CoreToStg.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/Env/Types.hs
- compiler/GHC/Driver/Flags.hs
- compiler/GHC/Driver/Main/Hsc.hs
- compiler/GHC/Driver/Main/Passes.hs
- compiler/GHC/Driver/Make.hs
- compiler/GHC/Driver/MakeFile.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/ImpExp.hs
- compiler/GHC/Hs/Lit.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.hs
- compiler/GHC/HsToCore/Arrows.hs
- compiler/GHC/HsToCore/Binds.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/Utils.hs
- compiler/GHC/HsToCore/Foreign/Wasm.hs
- compiler/GHC/HsToCore/ListComp.hs
- compiler/GHC/HsToCore/Match.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/Ppr.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/Usage.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/Ext/Ast.hs
- compiler/GHC/Iface/Load.hs
- compiler/GHC/Iface/Make.hs
- compiler/GHC/Iface/Recomp.hs
- compiler/GHC/Iface/Syntax.hs
- compiler/GHC/Iface/Tidy.hs
- compiler/GHC/Iface/Type.hs
- compiler/GHC/IfaceToCore.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/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/Debugger.hs
- compiler/GHC/Runtime/Eval.hs
- compiler/GHC/Runtime/Heap/Inspect.hs
- compiler/GHC/Runtime/Interpreter.hs
- compiler/GHC/Runtime/Loader.hs
- compiler/GHC/Stg/BcPrep.hs
- compiler/GHC/Stg/Unarise.hs
- compiler/GHC/StgToByteCode.hs
- compiler/GHC/StgToCmm/Bind.hs
- compiler/GHC/StgToCmm/DataCon.hs
- compiler/GHC/StgToCmm/Env.hs
- compiler/GHC/StgToCmm/Foreign.hs
- compiler/GHC/StgToCmm/Lit.hs
- compiler/GHC/StgToCmm/Ticky.hs
- compiler/GHC/StgToJS/Apply.hs
- compiler/GHC/StgToJS/Arg.hs
- compiler/GHC/StgToJS/Expr.hs
- compiler/GHC/StgToJS/FFI.hs
- compiler/GHC/StgToJS/Linker/Utils.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/Match.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/FunDeps.hs
- compiler/GHC/Tc/Instance/Typeable.hs
- compiler/GHC/Tc/Module.hs
- compiler/GHC/Tc/Plugin.hs
- compiler/GHC/Tc/Solver.hs
- compiler/GHC/Tc/Solver/Default.hs
- compiler/GHC/Tc/Solver/Dict.hs
- compiler/GHC/Tc/Solver/FunDeps.hs
- compiler/GHC/Tc/Solver/InertSet.hs
- compiler/GHC/Tc/Solver/Monad.hs
- compiler/GHC/Tc/Solver/Rewrite.hs
- compiler/GHC/Tc/TyCl.hs
- compiler/GHC/Tc/TyCl/Build.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/Constraint.hs
- compiler/GHC/Tc/Types/Evidence.hs
- compiler/GHC/Tc/Types/LclEnv.hs
- compiler/GHC/Tc/Types/Origin.hs
- compiler/GHC/Tc/Utils/Backpack.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/Utils/Unify.hs
- compiler/GHC/Tc/Validity.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/Literal.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/RepType.hs
- compiler/GHC/Types/TyThing.hs
- compiler/GHC/Types/Unique.hs
- compiler/GHC/Types/Unique/FM.hs
- + compiler/GHC/Types/UnresolvedImport.hs
- compiler/GHC/Types/Var.hs
- compiler/GHC/Unit.hs
- compiler/GHC/Unit/External.hs
- compiler/GHC/Unit/External/Index.hs
- compiler/GHC/Unit/External/ModuleOrigin.hs
- compiler/GHC/Unit/External/Providers.hs
- compiler/GHC/Unit/Finder.hs
- compiler/GHC/Unit/Finder/Types.hs
- compiler/GHC/Unit/Module/Deps.hs
- compiler/GHC/Unit/Module/ModSummary.hs
- compiler/GHC/Unit/State.hs
- compiler/GHC/Unit/Types.hs
- compiler/GHC/Utils/Binary.hs
- − compiler/GHC/Utils/Binary/Typeable.hs
- compiler/Language/Haskell/Syntax/Expr.hs
- compiler/ghc.cabal.in
- docs/users_guide/separate_compilation.rst
- docs/users_guide/using.rst
- ghc/GHC/Driver/Session/Mode.hs
- ghc/GHCi/UI.hs
- ghc/GHCi/UI/Monad.hs
- ghc/Main.hs
- libraries/base/base.cabal.in
- libraries/base/src/Control/Applicative.hs
- libraries/base/src/Control/Concurrent.hs
- libraries/base/src/Control/Concurrent/Chan.hs
- libraries/base/src/Control/Concurrent/QSem.hs
- libraries/base/src/Control/Concurrent/QSemN.hs
- libraries/base/src/Data/Array/Byte.hs
- libraries/base/src/Data/Bifoldable.hs
- libraries/base/src/Data/Bifoldable1.hs
- libraries/base/src/Data/Bifunctor.hs
- libraries/base/src/Data/Bitraversable.hs
- libraries/base/src/Data/Bool.hs
- libraries/base/src/Data/Complex.hs
- libraries/base/src/Data/Data.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/Contravariant.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/NonEmpty.hs
- libraries/base/src/Data/List/NubOrdSet.hs
- libraries/base/src/Data/Semigroup.hs
- libraries/base/src/Data/Version.hs
- libraries/base/src/GHC/Base.hs
- libraries/base/src/GHC/ByteOrder.hs
- + libraries/base/src/GHC/Essentials.hs
- libraries/base/src/GHC/Exts.hs
- libraries/base/src/GHC/Fingerprint.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/Numeric.hs
- libraries/base/src/Prelude.hs
- libraries/base/src/System/CPUTime/Posix/ClockGetTime.hsc
- libraries/base/src/System/CPUTime/Posix/RUsage.hsc
- libraries/base/src/System/CPUTime/Posix/Times.hsc
- libraries/base/src/System/CPUTime/Unsupported.hs
- libraries/base/src/System/Console/GetOpt.hs
- libraries/base/src/System/Exit.hs
- libraries/base/src/System/IO.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/src/Text/Read.hs
- libraries/base/src/Text/Show/Functions.hs
- libraries/binary
- libraries/ghc-experimental/src/Data/Sum/Experimental.hs
- libraries/ghc-experimental/src/Data/Tuple/Experimental.hs
- libraries/ghc-experimental/src/GHC/Profiling/Eras.hs
- libraries/ghc-experimental/src/Prelude/Experimental.hs
- libraries/ghc-internal/codepages/MakeTable.hs
- libraries/ghc-internal/ghc-internal.cabal.in
- libraries/ghc-internal/include/RtsIfaceSymbols.h
- libraries/ghc-internal/src/GHC/Internal/AllocationLimitHandler.hs
- libraries/ghc-internal/src/GHC/Internal/Arr.hs
- libraries/ghc-internal/src/GHC/Internal/ArrayArray.hs
- libraries/ghc-internal/src/GHC/Internal/Base.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/Backend.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/Backend/GMP.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/Bignum/Primitives.hs
- libraries/ghc-internal/src/GHC/Internal/Bignum/WordArray.hs
- libraries/ghc-internal/src/GHC/Internal/Bits.hs
- 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/Classes/IP.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/POSIX.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/POSIX/Const.hsc
- libraries/ghc-internal/src/GHC/Internal/Conc/Signal.hs
- libraries/ghc-internal/src/GHC/Internal/Conc/Sync.hs
- libraries/ghc-internal/src/GHC/Internal/ConsoleHandler.hsc
- 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.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/IO/Class.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Imp.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Lazy.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Lazy/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/Coerce.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/Function.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Functor.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/Functor/Utils.hs
- libraries/ghc-internal/src/GHC/Internal/Data/IORef.hs
- libraries/ghc-internal/src/GHC/Internal/Data/List.hs
- libraries/ghc-internal/src/GHC/Internal/Data/List/NonEmpty.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Maybe.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Monoid.hs
- libraries/ghc-internal/src/GHC/Internal/Data/NonEmpty.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/Semigroup/Internal.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/Tuple.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Type/Bool.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.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/Data/Void.hs
- libraries/ghc-internal/src/GHC/Internal/Debug/Trace.hs
- libraries/ghc-internal/src/GHC/Internal/Desugar.hs
- libraries/ghc-internal/src/GHC/Internal/Encoding/UTF8.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/Err.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Arr.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Array.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/IntTable.hs
- 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/KQueue.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Manager.hs
- libraries/ghc-internal/src/GHC/Internal/Event/PSQ.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/TimeOut.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/Event/Windows.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/Clock.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/ConsoleEvent.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/FFI.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/ManagedThreadPool.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/Thread.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/Backtrace.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Exception/Context.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Context.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Exception/Type.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Type.hs-boot
- libraries/ghc-internal/src/GHC/Internal/ExecutionStack.hs
- libraries/ghc-internal/src/GHC/Internal/ExecutionStack/Internal.hsc
- libraries/ghc-internal/src/GHC/Internal/Exts.hs
- 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/ConversionUtils.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/C/Types.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/Pool.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Marshal/Utils.hs
- libraries/ghc-internal/src/GHC/Internal/Foreign/Ptr.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.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/Constants.hsc
- 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.hs-boot
- 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/CodePage.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/CodePage/API.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/CodePage/Table.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/Latin1.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/Types.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/UTF16.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/UTF32.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Encoding/UTF8.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Exception.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Exception.hs-boot
- 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.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/Lock/NoOp.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/Windows.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/Handle/Types.hs-boot
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Windows.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/IO/Unsafe.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Windows/Encoding.hs
- libraries/ghc-internal/src/GHC/Internal/IO/Windows/Handle.hsc
- libraries/ghc-internal/src/GHC/Internal/IOArray.hs
- libraries/ghc-internal/src/GHC/Internal/IORef.hs
- libraries/ghc-internal/src/GHC/Internal/InfoProv.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/JS/Foreign/Callback.hs
- libraries/ghc-internal/src/GHC/Internal/JS/Prim.hs
- libraries/ghc-internal/src/GHC/Internal/LanguageExtensions.hs
- libraries/ghc-internal/src/GHC/Internal/Lexeme.hs
- libraries/ghc-internal/src/GHC/Internal/List.hs
- libraries/ghc-internal/src/GHC/Internal/MVar.hs
- libraries/ghc-internal/src/GHC/Internal/Magic.hs
- libraries/ghc-internal/src/GHC/Internal/Magic/Dict.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/Pack.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/Exception.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/Ext.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/Panic.hs
- libraries/ghc-internal/src/GHC/Internal/Prim/PtrEq.hs
- libraries/ghc-internal/src/GHC/Internal/Profiling.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/STM.hs
- libraries/ghc-internal/src/GHC/Internal/STRef.hs
- libraries/ghc-internal/src/GHC/Internal/Show.hs
- libraries/ghc-internal/src/GHC/Internal/Stable.hs
- libraries/ghc-internal/src/GHC/Internal/StableName.hs
- libraries/ghc-internal/src/GHC/Internal/Stack.hs
- libraries/ghc-internal/src/GHC/Internal/Stack.hs-boot
- libraries/ghc-internal/src/GHC/Internal/Stack/Annotation.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/Constants.hsc
- libraries/ghc-internal/src/GHC/Internal/Stack/ConstantsProf.hsc
- 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/Storable.hs
- 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/Error.hs
- libraries/ghc-internal/src/GHC/Internal/System/Mem.hs
- libraries/ghc-internal/src/GHC/Internal/System/Posix/Internals.hs
- libraries/ghc-internal/src/GHC/Internal/System/Posix/Types.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/Monad.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/ParserCombinators/ReadPrec.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/Type/Reflection.hs
- libraries/ghc-internal/src/GHC/Internal/Type/Reflection/Unsafe.hs
- libraries/ghc-internal/src/GHC/Internal/TypeError.hs
- libraries/ghc-internal/src/GHC/Internal/TypeLits.hs
- libraries/ghc-internal/src/GHC/Internal/TypeLits/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/TypeNats.hs
- libraries/ghc-internal/src/GHC/Internal/TypeNats/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/Types.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Bits.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/Char/UnicodeData/SimpleLowerCaseMapping.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Char/UnicodeData/SimpleTitleCaseMapping.hs
- libraries/ghc-internal/src/GHC/Internal/Unicode/Char/UnicodeData/SimpleUpperCaseMapping.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/Wasm/Prim/Conc.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Conc/Internal.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Exports.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Imports.hs
- libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Types.hs
- libraries/ghc-internal/src/GHC/Internal/Weak.hs
- libraries/ghc-internal/src/GHC/Internal/Weak/Finalize.hs
- libraries/ghc-internal/src/GHC/Internal/Windows.hs
- libraries/ghc-internal/src/GHC/Internal/Word.hs
- libraries/ghc-internal/tools/ucd2haskell/exe/UCD2Haskell/ModuleGenerators.hs
- libraries/ghc-prim/Dummy.hs
- libraries/ghc-prim/ghc-prim.cabal
- libraries/template-haskell/Language/Haskell/TH/Lib.hs
- linters/lint-codes/LintCodes/Static.hs
- rts/include/rts/RtsToHsIface.h
- testsuite/driver/testlib.py
- testsuite/driver/testutil.py
- testsuite/tests/ado/T13242a.stderr
- testsuite/tests/annotations/should_fail/annfail10.stderr
- testsuite/tests/backpack/cabal/bkpcabal07/Makefile
- testsuite/tests/backpack/should_compile/T20396.stderr
- testsuite/tests/backpack/should_fail/bkpfail17.stderr
- testsuite/tests/cabal/T12485/Makefile
- + testsuite/tests/cabal/T27013a/Makefile
- + testsuite/tests/cabal/T27013a/Setup.hs
- + testsuite/tests/cabal/T27013a/all.T
- + testsuite/tests/cabal/T27013a/composition.cabal
- + testsuite/tests/cabal/T27013a/src/Data/Composition.hs
- + testsuite/tests/cabal/T27013d/Composition.hs
- + testsuite/tests/cabal/T27013d/Makefile
- + testsuite/tests/cabal/T27013d/T27013d.stdout
- + testsuite/tests/cabal/T27013d/all.T
- testsuite/tests/callarity/unittest/CallArity1.hs
- testsuite/tests/corelint/LintEtaExpand.hs
- testsuite/tests/corelint/T21115b.stderr
- testsuite/tests/corelint/T27374.hs
- testsuite/tests/count-deps/CountDepsParser.stdout
- testsuite/tests/deSugar/should_compile/T13208.stdout
- testsuite/tests/deSugar/should_compile/T16615.stderr
- testsuite/tests/deSugar/should_compile/T2431.stderr
- testsuite/tests/default/DefaultImportFail01.stderr
- testsuite/tests/default/DefaultImportFail02.stderr
- testsuite/tests/default/DefaultImportFail03.stderr
- testsuite/tests/default/DefaultImportFail04.stderr
- testsuite/tests/default/DefaultImportFail05.stderr
- testsuite/tests/default/DefaultImportFail07.stderr
- testsuite/tests/default/T25775.stderr
- testsuite/tests/deriving/should_compile/T14682.stderr
- testsuite/tests/deriving/should_compile/T20496.stderr
- testsuite/tests/diagnostic-codes/codes.stdout
- + testsuite/tests/driver/T27013b/Makefile
- + testsuite/tests/driver/T27013b/T27013b.stdout
- + testsuite/tests/driver/T27013b/X.hs
- + testsuite/tests/driver/T27013b/all.T
- + testsuite/tests/driver/T27013c/Makefile
- + testsuite/tests/driver/T27013c/T27013c.stdout
- + testsuite/tests/driver/T27013c/X.hs
- + testsuite/tests/driver/T27013c/all.T
- + testsuite/tests/driver/T27013e/T27013e.hs
- + testsuite/tests/driver/T27013e/T27013e.stderr
- + testsuite/tests/driver/T27013e/all.T
- + testsuite/tests/driver/T27013f/T27013f.hs
- + testsuite/tests/driver/T27013f/T27013f.stderr
- + testsuite/tests/driver/T27013f/all.T
- + testsuite/tests/driver/T27013g/T27013g.hs
- + testsuite/tests/driver/T27013g/all.T
- + testsuite/tests/driver/T27013h/GHC/Essentials.hs
- + testsuite/tests/driver/T27013h/T27013h.stderr
- + testsuite/tests/driver/T27013h/all.T
- + testsuite/tests/driver/T27013h/unitT27013h
- + testsuite/tests/driver/T27013i/T27013i.hs
- + testsuite/tests/driver/T27013i/T27013i.stderr
- + testsuite/tests/driver/T27013i/all.T
- testsuite/tests/driver/T3007/A/Internal.hs
- testsuite/tests/driver/T3007/Makefile
- testsuite/tests/driver/make-prim/Makefile
- testsuite/tests/driver/multipleHomeUnits/Makefile
- testsuite/tests/driver/multipleHomeUnits/all.T
- + testsuite/tests/driver/multipleHomeUnits/essentials-home/GHC/Essentials.hs
- + testsuite/tests/driver/multipleHomeUnits/essentials-order-base/B.hs
- + testsuite/tests/driver/multipleHomeUnits/essentials-order-user/U.hs
- + testsuite/tests/driver/multipleHomeUnits/essentials-user/M.hs
- testsuite/tests/driver/multipleHomeUnits/multipleHomeUnitsModuleVisibility.stderr
- + testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_essentials.stdout
- + testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_essentials_order.stderr
- + testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_essentials_recomp.stdout
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsHome
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsHomeHidden
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsOrderBase
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsOrderUser
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsUser
- + testsuite/tests/driver/multipleHomeUnits/unitEssentialsUserHidden
- testsuite/tests/driver/recomp24656/Makefile
- testsuite/tests/driver/recomp24656/recomp24656.stdout
- + testsuite/tests/ghc-api/EssentialsCoverage.hs
- testsuite/tests/ghc-api/T8628.hs
- testsuite/tests/ghc-api/all.T
- testsuite/tests/ghc-api/downsweep/PartialDownsweep.hs
- testsuite/tests/ghci.debugger/scripts/break006.stderr
- testsuite/tests/ghci.debugger/scripts/print019.stderr
- testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout
- testsuite/tests/ghci/scripts/T4175.stdout
- testsuite/tests/ghci/scripts/all.T
- testsuite/tests/ghci/scripts/ghci064.stdout
- testsuite/tests/hiefile/should_run/T23120.stdout
- testsuite/tests/iface/IfaceSharingIfaceType.hs
- testsuite/tests/iface/IfaceSharingName.hs
- testsuite/tests/indexed-types/should_fail/T12522a.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/ghc-experimental-exports.stdout
- testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32
- testsuite/tests/interface-stability/ghc-prim-exports.stdout
- testsuite/tests/interface-stability/ghc-prim-exports.stdout-mingw32
- testsuite/tests/interface-stability/template-haskell-exports.stdout
- testsuite/tests/javascript/Makefile
- testsuite/tests/javascript/T24495.hs
- testsuite/tests/module/mod185.stderr
- testsuite/tests/numeric/should_compile/T14170.stdout
- testsuite/tests/numeric/should_compile/T14465.stdout
- testsuite/tests/numeric/should_compile/T7116.stdout
- testsuite/tests/overloadedlists/should_fail/overloadedlistsfail01.stderr
- testsuite/tests/package/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/DumpTypecheckedAst.stderr
- testsuite/tests/parser/should_compile/KindSigs.stderr
- testsuite/tests/parser/should_compile/T14189.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail10.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail11.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail13.stderr
- testsuite/tests/parser/should_fail/RecordDotSyntaxFail8.stderr
- testsuite/tests/parser/should_fail/T16270h.hs
- testsuite/tests/partial-sigs/should_fail/NamedWildcardsNotInMonotype.stderr
- testsuite/tests/patsyn/should_fail/T26465.stderr
- testsuite/tests/perf/should_run/ByteCodeAsm.hs
- testsuite/tests/plugins/defaulting-plugin/DefaultInterference.hs
- testsuite/tests/plugins/defaulting-plugin/DefaultInvalid.hs
- testsuite/tests/plugins/defaulting-plugin/DefaultMultiParam.hs
- testsuite/tests/plugins/plugins09.stdout
- testsuite/tests/plugins/plugins10.stdout
- testsuite/tests/plugins/plugins11.stdout
- testsuite/tests/plugins/simple-plugin/Simple/ReplacePlugin.hs
- testsuite/tests/plugins/static-plugins.stdout
- testsuite/tests/profiling/should_run/callstack001.stdout
- testsuite/tests/profiling/should_run/callstack002.stderr
- testsuite/tests/profiling/should_run/callstack002.stdout
- testsuite/tests/rename/should_compile/T3103/Foreign/Ptr.hs
- testsuite/tests/rename/should_compile/T3103/GHC/Base.lhs
- testsuite/tests/rename/should_compile/T3103/GHC/Word.hs
- testsuite/tests/rename/should_compile/T3103/test.T
- testsuite/tests/roles/should_compile/Roles1.stderr
- testsuite/tests/roles/should_compile/Roles13.stderr
- testsuite/tests/roles/should_compile/Roles14.stderr
- testsuite/tests/roles/should_compile/Roles2.stderr
- testsuite/tests/roles/should_compile/Roles3.stderr
- testsuite/tests/roles/should_compile/Roles4.stderr
- testsuite/tests/roles/should_compile/T8958.stderr
- + testsuite/tests/show-bytecode/Example.hs
- + testsuite/tests/show-bytecode/Makefile
- + testsuite/tests/show-bytecode/all.T
- + testsuite/tests/show-bytecode/normalize
- + testsuite/tests/show-bytecode/show-bytecode-breakpoints.stdout
- + testsuite/tests/show-bytecode/show-bytecode-breakpoints.stdout-javascript-unknown-ghcjs
- + testsuite/tests/show-bytecode/show-bytecode-hpc.stdout
- + testsuite/tests/show-bytecode/show-bytecode-vanilla.stdout
- + testsuite/tests/show-bytecode/show-bytecode-vanilla.stdout-javascript-unknown-ghcjs
- testsuite/tests/simplCore/should_compile/OpaqueNoCastWW.stderr
- testsuite/tests/simplCore/should_compile/T13543.stderr
- testsuite/tests/simplCore/should_compile/T16038/T16038.stdout
- testsuite/tests/simplCore/should_compile/T3717.stderr
- testsuite/tests/simplCore/should_compile/T3772.stdout
- testsuite/tests/simplCore/should_compile/T4908.stderr
- testsuite/tests/simplCore/should_compile/T4930.stderr
- testsuite/tests/simplCore/should_compile/T7360.stderr
- testsuite/tests/simplCore/should_compile/T8274.stdout
- testsuite/tests/simplCore/should_compile/T9400.stderr
- testsuite/tests/simplCore/should_compile/noinline01.stderr
- testsuite/tests/simplCore/should_compile/par01.stderr
- testsuite/tests/simplCore/should_compile/rule2.stderr
- testsuite/tests/simplCore/should_compile/str-rules.hs
- testsuite/tests/tcplugins/ArgsPlugin.hs
- testsuite/tests/tcplugins/EmitWantedPlugin.hs
- testsuite/tests/tcplugins/RewritePlugin.hs
- testsuite/tests/tcplugins/T26395_Plugin.hs
- testsuite/tests/tcplugins/TyFamPlugin.hs
- testsuite/tests/th/T14741.hs
- testsuite/tests/th/T21547.stderr
- testsuite/tests/th/T26568.stderr
- + testsuite/tests/th/T27013th.hs
- testsuite/tests/th/TH_Roles2.stderr
- + testsuite/tests/th/TH_pragmaSpecOld.hs
- + testsuite/tests/th/TH_pragmaSpecOld.stderr
- testsuite/tests/th/all.T
- testsuite/tests/typecheck/should_compile/T13032.stderr
- testsuite/tests/typecheck/should_compile/T14273.stderr
- testsuite/tests/typecheck/should_compile/T18406b.stderr
- testsuite/tests/typecheck/should_compile/T18529.stderr
- testsuite/tests/typecheck/should_compile/holes.stderr
- testsuite/tests/typecheck/should_compile/holes2.stderr
- testsuite/tests/typecheck/should_compile/holes3.stderr
- testsuite/tests/typecheck/should_compile/subsumption_sort_hole_fits.stderr
- testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr
- testsuite/tests/typecheck/should_fail/T12921.stderr
- testsuite/tests/typecheck/should_fail/T14884.stderr
- testsuite/tests/typecheck/should_fail/T15883b.stderr
- testsuite/tests/typecheck/should_fail/T15883c.stderr
- testsuite/tests/typecheck/should_fail/T15883d.stderr
- testsuite/tests/typecheck/should_fail/T21130.stderr
- testsuite/tests/typecheck/should_fail/T3323.stderr
- testsuite/tests/typecheck/should_fail/T5095.stderr
- testsuite/tests/typecheck/should_fail/T7279.stderr
- testsuite/tests/typecheck/should_fail/TcStaticPointersFail02.stderr
- testsuite/tests/typecheck/should_fail/TyAppPat_PatternBindingExistential.stderr
- testsuite/tests/typecheck/should_fail/tcfail072.stderr
- testsuite/tests/typecheck/should_fail/tcfail097.stderr
- testsuite/tests/typecheck/should_fail/tcfail133.stderr
- testsuite/tests/typecheck/should_run/T22510.stdout
- testsuite/tests/unboxedsums/UbxSumLevPoly.hs
- testsuite/tests/unboxedsums/unboxedsums_unit_tests.hs
- testsuite/tests/warnings/should_compile/DerivingTypeable.stderr
- utils/check-exact/Utils.hs
- utils/genprimopcode/Main.hs
- utils/haddock/haddock-api/src/Haddock/Convert.hs
- utils/haddock/haddock-api/src/Haddock/GhcUtils.hs
- utils/haddock/haddock-api/src/Haddock/Interface.hs
- utils/haddock/haddock-api/src/Haddock/Interface/AttachInstances.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
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/35823b6fdb4f67afac2b9482715117…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/35823b6fdb4f67afac2b9482715117…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
Hannes Siebenhandl pushed to branch wip/fendor/has-field-hie at Glasgow Haskell Compiler / GHC
Commits:
f453b126 by fendor at 2026-08-11T11:13:11+02:00
WIP
- - - - -
9 changed files:
- compiler/GHC/Iface/Ext/Ast.hs
- compiler/GHC/Rename/Expr.hs
- compiler/GHC/Rename/Utils.hs
- − testsuite/tests/hiefile/should_run/HasFieldQueries
- testsuite/tests/hiefile/should_run/HasFieldQueries.hs
- testsuite/tests/hiefile/should_run/HasFieldQueries.stdout
- testsuite/tests/hiefile/should_run/RecordDotTypes.stdout
- testsuite/tests/hiefile/should_run/T23492.hs
- testsuite/tests/hiefile/should_run/T23492.stdout
Changes:
=====================================
compiler/GHC/Iface/Ext/Ast.hs
=====================================
@@ -21,7 +21,7 @@ import GHC.Core.Class ( className, classSCSelIds )
import GHC.Core.Utils (exprType)
import GHC.Core.TyCo.Rep (Type(TyConApp))
import GHC.Core.TyCon (TyCon(..))
-import GHC.Builtin.Names (hasFieldClassName, getFieldName)
+import GHC.Builtin.Names (hasFieldClassName)
import GHC.Core.ConLike ( conLikeName )
import GHC.Core.DataCon ( dataConWrapperType )
import GHC.Core.Type ( Type, ForAllTyFlag(..) )
@@ -687,21 +687,12 @@ hieEvIdsOfTerm :: EvTerm -> [EvId]
-- Returns only EvIds satisfying relevantEvId
hieEvIdsOfTerm = runFVSelectiveList isEvId . evTermFVs
-evFreeVarsOfTermList :: EvTerm -> [Var]
-evFreeVarsOfTermList (EvExpr e) = exprFreeVarsList e
-evFreeVarsOfTermList _ = []
-
-evDepsOfTermList :: EvTerm -> [EvId]
-evDepsOfTermList e
- | isHasFieldEvTerm e = evFreeVarsOfTermList e
- | otherwise = evVarsOfTermList e
-
instance ToHie (EvBindContext (LocatedA TcEvBinds)) where
toHie (EvBindContext sc sp (L span (EvBinds bs)))
= concatMapM go $ bagToList bs
where
go evbind = do
- let evDeps = evDepsOfTermList $ eb_rhs evbind
+ let evDeps = hieEvIdsOfTerm $ eb_rhs evbind
depNames = EvBindDeps $ map varName evDeps
concatM $
[ toHie (C (EvidenceVarBind (EvLetBind depNames) (combineScopes sc (mkScope span)) sp)
@@ -731,7 +722,8 @@ instance ToHie (LocatedA HsWrapper) where
(WpEvApp a)
| isHasFieldEvTerm a ->
-- concatMapM (toHie . C EvidenceVarUse . L osp) $ hieEvIdsOfTerm a
- pprTrace "HasField" (ppr (a, osp)) $ concatMapM (toHie . C EvidenceVarUse . L osp) $ hieEvIdsOfTerm a
+ pprTrace "HasField" (ppr (a, osp)) $
+ concatMapM (toHie . C EvidenceVarUse . L osp) $ hieEvIdsOfTerm a
| otherwise ->
-- pprTrace "Not HasField" (ppr (a, osp)) $ concatMapM (toHie . C EvidenceVarUse . L osp) $ hieEvIdsOfTerm a
concatMapM (toHie . C EvidenceVarUse . L osp) $ hieEvIdsOfTerm a
=====================================
compiler/GHC/Rename/Expr.hs
=====================================
@@ -418,12 +418,11 @@ rnExpr (NegApp _ e _)
rnExpr (HsGetField _ e f)
= do { (getField, fv_getField) <- lookupSyntaxName getFieldName
; (e, fv_e) <- rnLExpr e
- ; let f' = rnDotFieldOcc f
- ; srcSpan <- getSrcSpanM
+ ; let f' = rnDotFieldOcc <$> f
; return ( mkExpandedExpr
(HsGetField noExtField e f')
- (mkGetField srcSpan getField e (fmap (unLoc . dfoLabel) f'))
- , fv_e `plusFV` fv_getField ) }
+ (mkGetField getField e (fmap (unLoc . dfoLabel) f'))
+ , fv_e `plusFN` fv_getField ) }
rnExpr (HsProjection _ fs)
= do { (getField, fv_getField) <- lookupSyntaxName getFieldName
@@ -2860,10 +2859,11 @@ rnHsIf p b1 b2
-- mkGetField arg field calculates a get_field @field arg expression.
-- e.g. z.x = mkGetField z x = get_field @x z
-mkGetField :: SrcSpan -> Name -> LHsExpr GhcRn -> LocatedAn NoEpAnns FieldLabelString -> HsExpr GhcRn
-mkGetField srcSpan get_field arg (L _ (FieldLabelString field)) =
+mkGetField :: Name -> LHsExpr GhcRn -> LocatedAn NoEpAnns FieldLabelString -> HsExpr GhcRn
+mkGetField get_field arg (L ann (FieldLabelString field)) =
+ pprTrace "mkGetField" (ppr ann <+> ppr field)
-- See Note [Source locations for implicit function calls] in GHC.Iface.Ext.Ast
- genHsAppWith srcSpan (genAppTypeWith srcSpan (genHsVar get_field) (genHsTyLit field)) arg
+ genHsAppWith (getHasLoc ann) (genHsVar get_field `genAppType` genHsTyLit field) arg
-- mkSetField a field b calculates a set_field @field expression.
-- e.g mkSetSetField a field b = set_field @"field" a b (read as "set field 'field' to a on b").
=====================================
compiler/GHC/Rename/Utils.hs
=====================================
@@ -17,7 +17,7 @@ module GHC.Rename.Utils (
DeprecationWarnings(..), warnIfDeprecated,
checkUnusedRecordWildcard,
badQualBndrErr, typeAppErr, badFieldConErr,
- wrapGenSpan, wrapGenSpan', genHsVar, genHsVarWith, genLHsVar, genHsApp, genHsAppWith, genHsApps, genHsApps', genHsExpApps,
+ wrapGenSpan, wrapGenSpan', wrapNoSpan, genHsVar, genHsVarWith, genLHsVar, genHsApp, genHsAppWith, genHsApps, genHsApps', genHsExpApps,
genLHsApp, genAppType, genAppTypeWith,
genLHsLit, genHsIntegralLit, genHsTyLit, genSimpleConPat,
genVarPat, genWildPat,
@@ -740,7 +740,7 @@ genHsApp :: HsExpr GhcRn -> LHsExpr GhcRn -> HsExpr GhcRn
genHsApp fun arg = HsApp noExtField (wrapGenSpan fun) arg
genHsAppWith :: SrcSpan -> HsExpr GhcRn -> LHsExpr GhcRn -> HsExpr GhcRn
-genHsAppWith srcSpan fun arg = HsApp noExtField (wrapSrcSpan srcSpan fun) arg
+genHsAppWith srcSpan fun arg = HsApp noExtField (wrapGenSpan' srcSpan fun) arg
genLHsApp :: HsExpr GhcRn -> LHsExpr GhcRn -> LHsExpr GhcRn
genLHsApp fun arg = wrapGenSpan (genHsApp fun arg)
=====================================
testsuite/tests/hiefile/should_run/HasFieldQueries deleted
=====================================
Binary files a/testsuite/tests/hiefile/should_run/HasFieldQueries and /dev/null differ
=====================================
testsuite/tests/hiefile/should_run/HasFieldQueries.hs
=====================================
@@ -1,6 +1,4 @@
{-# LANGUAGE OverloadedRecordDot #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE DataKinds #-}
module Main where
import TestUtils
@@ -8,46 +6,43 @@ import GHC.Records
import GHC.TypeLits
import Data.Tree
-class C a where
- f :: a -> Char
-
-instance C Char where
- f x = x
-
data Thing = Thing {field1 :: Char, field2 :: Bool}
deriving (Show, Eq)
foo :: Thing -> String
foo t = show t.field1 ++ show t.field2
- -- ^ this is the point
-point :: (Int,Int)
-point = (21,17)
-
-bar :: Show x => x -> String
-bar x = show [(1,x,A)]
--- ^ this is the point'
-point' :: (Int,Int)
-point' = (21,33)
-
-add :: Num a => a -> a -> a
-add x y = x + y
-
-testing (x :: Int) =
- add (add x x) x
-
+-- ^ this is the point
+
testing2 (x :: Thing) = x.field1
+-- ^ this is the point
+-- ^ this is the point
+
+data NestedThing = NestedThing { nested1 :: Thing }
-data A = A deriving Show
+nestedSig :: NestedThing -> Char
+nestedSig n = n.nested1.field1
+-- ^ this is the point
+-- ^ this is the point
-data Another = Another
+nestedNoSig n = n.nested1.field2 :: Bool
+-- ^ this is the point
+-- ^ this is the point
-testing3 = (natSing :: SNat 0)
+
+
+points =
+ [ (13,17)
+ , (16,25)
+ , (16,27)
+ , (23,17)
+ , (23,25)
+ , (27,20)
+ , (27,28)
+ ]
main = do
(df, hf) <- readTestHie "HasFieldQueries.hie"
let refmap = generateReferencesMap $ getAsts $ hie_asts hf
- explainEv df hf refmap point
-
- explainEv df hf refmap point'
+ traverse (explainEv df hf refmap) points
return ()
=====================================
testsuite/tests/hiefile/should_run/HasFieldQueries.stdout
=====================================
@@ -1,34 +1,109 @@
==========================
-At point (21,17), we found:
+At point (13,17), we found:
==========================
┌
│ $dHasField at HasFieldQueries.hs:1:1, of type: HasField "field1" Thing Char
-│ is an evidence variable bound by a let, depending on: [field1]
+│ is an evidence variable bound by a let, depending on: [C:HasField]
│ with scope: ModuleScope
│
│ Defined at <no location info>
└
|
`- ┌
- │ field1 at HasFieldQueries.hs:1:1, of type: Thing -> Char
+ │ C:HasField at HasFieldQueries.hs:1:1, of type: forall {k} (x :: k) r a. (r -> a) -> HasField x r a
│ is a usage of an external evidence variable
- │ Defined at HasFieldQueries.hs:17:21
+ │ Defined in `GHC.Internal.Records'
└
==========================
-At point (21,33), we found:
+At point (16,25), we found:
+==========================
+==========================
+At point (16,27), we found:
+==========================
+┌
+│ $dHasField at HasFieldQueries.hs:16:1-32, of type: HasField "field1" Thing Char
+│ is an evidence variable bound by a let, depending on: [C:HasField]
+│ with scope: LocalScope HasFieldQueries.hs:16:1-32
+│ bound at: HasFieldQueries.hs:16:1-32
+│ Defined at <no location info>
+└
+|
+`- ┌
+ │ C:HasField at HasFieldQueries.hs:1:1, of type: forall {k} (x :: k) r a. (r -> a) -> HasField x r a
+ │ is a usage of an external evidence variable
+ │ Defined in `GHC.Internal.Records'
+ └
+
+==========================
+At point (23,17), we found:
==========================
┌
-│ $dHasField at HasFieldQueries.hs:1:1, of type: HasField "field2" Thing Bool
-│ is an evidence variable bound by a let, depending on: [field2]
+│ $dHasField at HasFieldQueries.hs:1:1, of type: HasField "nested1" NestedThing Thing
+│ is an evidence variable bound by a let, depending on: [C:HasField]
│ with scope: ModuleScope
│
│ Defined at <no location info>
└
|
`- ┌
- │ field2 at HasFieldQueries.hs:1:1, of type: Thing -> Bool
+ │ C:HasField at HasFieldQueries.hs:1:1, of type: forall {k} (x :: k) r a. (r -> a) -> HasField x r a
│ is a usage of an external evidence variable
- │ Defined at HasFieldQueries.hs:17:37
+ │ Defined in `GHC.Internal.Records'
+ └
+
+==========================
+At point (23,25), we found:
+==========================
+┌
+│ $dHasField at HasFieldQueries.hs:1:1, of type: HasField "field1" Thing Char
+│ is an evidence variable bound by a let, depending on: [C:HasField]
+│ with scope: ModuleScope
+│
+│ Defined at <no location info>
+└
+|
+`- ┌
+ │ C:HasField at HasFieldQueries.hs:1:1, of type: forall {k} (x :: k) r a. (r -> a) -> HasField x r a
+ │ is a usage of an external evidence variable
+ │ Defined in `GHC.Internal.Records'
+ └
+
+==========================
+At point (27,20), we found:
+==========================
+┌
+│ $dHasField at HasFieldQueries.hs:27:1-40, of type: HasField "nested1" r r
+│ is an evidence variable bound by a let, depending on: [$dHasField]
+│ with scope: LocalScope HasFieldQueries.hs:27:1-40
+│ bound at: HasFieldQueries.hs:27:1-40
+│ Defined at <no location info>
+└
+|
+`- ┌
+ │ $dHasField at HasFieldQueries.hs:27:1-40, of type: HasField "nested1" r r
+ │ is an evidence variable bound by a type signature
+ │ with scope: LocalScope HasFieldQueries.hs:27:1-40
+ │ bound at: HasFieldQueries.hs:27:1-40
+ │ Defined at <no location info>
+ └
+
+==========================
+At point (27,28), we found:
+==========================
+┌
+│ $dHasField at HasFieldQueries.hs:27:1-40, of type: HasField "field2" r Bool
+│ is an evidence variable bound by a let, depending on: [$dHasField]
+│ with scope: LocalScope HasFieldQueries.hs:27:1-40
+│ bound at: HasFieldQueries.hs:27:1-40
+│ Defined at <no location info>
+└
+|
+`- ┌
+ │ $dHasField at HasFieldQueries.hs:27:1-40, of type: HasField "field2" r Bool
+ │ is an evidence variable bound by a type signature
+ │ with scope: LocalScope HasFieldQueries.hs:27:1-40
+ │ bound at: HasFieldQueries.hs:27:1-40
+ │ Defined at <no location info>
└
=====================================
testsuite/tests/hiefile/should_run/RecordDotTypes.stdout
=====================================
@@ -1,14 +1,5 @@
At (22,6), got type: MyRecord
-At (22,20), got type: Integer
-MyRecord -> Integer
-forall {k} (x :: k) r a. HasField x r a => r -> a
-forall (x :: Symbol) r a. HasField x r a => r -> a
+At (22,20), got type: MyRecord -> Integer
At (22,25), got type: MyRecord
-At (22,28), got type: String
-MyChild -> String
-forall {k} (x :: k) r a. HasField x r a => r -> a
-forall (x :: Symbol) r a. HasField x r a => r -> a
-At (22,29), got type: String
-MyChild -> String
-forall {k} (x :: k) r a. HasField x r a => r -> a
-forall (x :: Symbol) r a. HasField x r a => r -> a
+At (22,28), got type: MyChild -> String
+At (22,29), got type: MyChild -> String
=====================================
testsuite/tests/hiefile/should_run/T23492.hs
=====================================
@@ -24,12 +24,20 @@ g x = x.a
-- ^^^
-- 345
-p1, p2, p3, p4, p5 :: (Int,Int)
+h :: PartialFieldSelector -> Bool
+h x = (.a) x
+-- ^^ ^
+-- 67 8
+
+p1, p2, p3, p4, p5, p6, p7, p8 :: (Int,Int)
p1 = (13,20)
p2 = (18,7)
p3 = (23,7)
p4 = (23,8)
p5 = (23,9)
+p6 = (28,8)
+p7 = (28,9)
+p8 = (28,12)
selectPoint' :: HieFile -> (Int,Int) -> HieAST Int
selectPoint' hf loc =
@@ -37,7 +45,7 @@ selectPoint' hf loc =
main = do
(df, hf) <- readTestHie "T23492.hie"
- forM_ [p1,p2,p3,p4,p5] $ \point -> do
+ forM_ [p1,p2,p3,p4,p5,p6,p7,p8] $ \point -> do
putStr $ "At " ++ show point ++ ", got type: "
let types = concatMap nodeType $ getSourcedNodeInfo $ sourcedNodeInfo $ selectPoint' hf point
forM_ types $ \typ -> do
=====================================
testsuite/tests/hiefile/should_run/T23492.stdout
=====================================
@@ -4,4 +4,7 @@ PartialFieldSelector
At (18,7), got type: PartialFieldSelector -> Bool
At (23,7), got type: PartialFieldSelector
At (23,8), got type: PartialFieldSelector
-At (23,9), got type: Bool
+At (23,9), got type: PartialFieldSelector -> Bool
+At (28,8), got type: PartialFieldSelector -> Bool
+At (28,9), got type: PartialFieldSelector -> Bool
+At (28,12), got type: PartialFieldSelector
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/f453b12681a5846712b8b9ed85eb2c3…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/f453b12681a5846712b8b9ed85eb2c3…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/jeltsch/ghc-9-14-building-base] Fix the GHC installation path
by Wolfgang Jeltsch (@jeltsch) 11 Aug '26
by Wolfgang Jeltsch (@jeltsch) 11 Aug '26
11 Aug '26
Wolfgang Jeltsch pushed to branch wip/jeltsch/ghc-9-14-building-base at Glasgow Haskell Compiler / GHC
Commits:
a5cb420a by Wolfgang Jeltsch at 2026-08-11T12:12:07+03:00
Fix the GHC installation path
- - - - -
1 changed file:
- .gitlab/base-ci.sh
Changes:
=====================================
.gitlab/base-ci.sh
=====================================
@@ -47,7 +47,7 @@ do
>${ghc_version}.tar.xz
tar -xJf ${ghc_version}.tar.xz
cd ghc-${ghc_version}-*
- ./configure --prefix "${project_root}/opt/${ghc_version}"
+ ./configure --prefix "${project_root}/other-ghcs/opt/${ghc_version}"
make install
cd ${project_root}
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a5cb420ad5c65d0660f89b9080f093c…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a5cb420ad5c65d0660f89b9080f093c…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/annotate-frame] Implement annotateIO and annotateSTM via stack annotations instead of catch and rethrow
by Zubin (@wz1000) 11 Aug '26
by Zubin (@wz1000) 11 Aug '26
11 Aug '26
Zubin pushed to branch wip/annotate-frame at Glasgow Haskell Compiler / GHC
Commits:
8229e600 by Zubin Duggal at 2026-08-11T13:39:51+05:30
Implement annotateIO and annotateSTM via stack annotations instead of catch and rethrow
Fixes #26368
Fixes #27657
- - - - -
7 changed files:
- libraries/ghc-internal/src/GHC/Internal/Exception.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs
- libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs-boot
- libraries/ghc-internal/src/GHC/Internal/IO.hs
- libraries/ghc-internal/src/GHC/Internal/STM.hs
- libraries/ghc-internal/src/GHC/Internal/Stack/Annotation.hs
- libraries/ghc-internal/src/GHC/Internal/Stack/Decode.hs
Changes:
=====================================
libraries/ghc-internal/src/GHC/Internal/Exception.hs
=====================================
@@ -75,7 +75,7 @@ import GHC.Internal.Stack.Types
import GHC.Internal.Types (IO, RuntimeRep)
import GHC.Internal.IO.Unsafe
import {-# SOURCE #-} GHC.Internal.Stack (prettyCallStackLines, prettyCallStack, prettySrcLoc, withFrozenCallStack)
-import {-# SOURCE #-} GHC.Internal.Exception.Backtrace (collectExceptionAnnotation)
+import {-# SOURCE #-} GHC.Internal.Exception.Backtrace (collectExceptionContext)
import GHC.Internal.Exception.Context (SomeExceptionAnnotation(..))
import GHC.Internal.Exception.Type
@@ -175,11 +175,13 @@ throw e =
-- @since base-4.20.0.0
toExceptionWithBacktrace :: (HasCallStack, Exception e)
=> e -> IO SomeException
-toExceptionWithBacktrace e
- | backtraceDesired e = do
- SomeExceptionAnnotation ea <- collectExceptionAnnotation
- return (addExceptionContext ea (toException e))
- | otherwise = return (toException e)
+toExceptionWithBacktrace e = do
+ anns <- collectExceptionContext (backtraceDesired e)
+ return (applyAnns anns (toException e))
+ where
+ applyAnns [] se = se
+ applyAnns (SomeExceptionAnnotation a : rest) se =
+ applyAnns rest (addExceptionContext a se)
-- | This is thrown when the user calls 'error'. The @String@ is the
-- argument given to 'error'.
=====================================
libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs
=====================================
@@ -16,6 +16,8 @@ import GHC.Internal.Maybe (Maybe(..))
import GHC.Internal.Ptr
import GHC.Internal.Data.Maybe (fromMaybe, mapMaybe)
import GHC.Internal.Stack.Types as GHC.Stack (CallStack, HasCallStack)
+import GHC.Internal.Stack.Annotation (SomeStackAnnotation(..))
+import GHC.Internal.Data.Typeable (cast)
import qualified GHC.Internal.Stack as HCS
import qualified GHC.Internal.ExecutionStack.Internal as ExecStack
import qualified GHC.Internal.Stack.CloneStack as CloneStack
@@ -94,12 +96,12 @@ setBacktraceMechanismState bm enabled = do
-- | How to collect 'ExceptionAnnotation's on throwing 'Exception's.
--
data CollectExceptionAnnotationMechanism = CollectExceptionAnnotationMechanism
- { ceaCollectExceptionAnnotationMechanism :: HasCallStack => IO SomeExceptionAnnotation
+ { ceaCollectExceptionAnnotationMechanism :: HasCallStack => CloneStack.StackSnapshot -> IO SomeExceptionAnnotation
}
defaultCollectExceptionAnnotationMechanism :: CollectExceptionAnnotationMechanism
defaultCollectExceptionAnnotationMechanism = CollectExceptionAnnotationMechanism
- { ceaCollectExceptionAnnotationMechanism = SomeExceptionAnnotation `fmap` collectBacktraces
+ { ceaCollectExceptionAnnotationMechanism = \snapshot -> SomeExceptionAnnotation `fmap` collectBacktracesFrom snapshot
}
collectExceptionAnnotationMechanismRef :: IORef CollectExceptionAnnotationMechanism
@@ -117,7 +119,7 @@ getCollectExceptionAnnotationMechanism = readIORef collectExceptionAnnotationMec
setCollectExceptionAnnotation :: ExceptionAnnotation a => (HasCallStack => IO a) -> IO ()
setCollectExceptionAnnotation collector = do
let cea = CollectExceptionAnnotationMechanism
- { ceaCollectExceptionAnnotationMechanism = fmap SomeExceptionAnnotation collector
+ { ceaCollectExceptionAnnotationMechanism = \_ -> fmap SomeExceptionAnnotation collector
}
_ <- atomicModifyIORef'_ collectExceptionAnnotationMechanismRef (const cea)
return ()
@@ -165,18 +167,42 @@ instance ExceptionAnnotation Backtraces where
--
collectExceptionAnnotation :: HasCallStack => IO SomeExceptionAnnotation
collectExceptionAnnotation = HCS.withFrozenCallStack $ do
+ snapshot <- CloneStack.cloneMyStack
cea <- getCollectExceptionAnnotationMechanism
- ceaCollectExceptionAnnotationMechanism cea
+ ceaCollectExceptionAnnotationMechanism cea snapshot
+
+stackAnnotationsFrom :: CloneStack.StackSnapshot -> IO [SomeExceptionAnnotation]
+stackAnnotationsFrom snapshot = do
+ anns <- CloneStack.decodeStackAnnotations snapshot
+ return (mapMaybe (\(SomeStackAnnotation a) -> cast a) anns)
+
+collectExceptionContext :: HasCallStack => Bool -> IO [SomeExceptionAnnotation]
+collectExceptionContext backtrace_desired = HCS.withFrozenCallStack $ do
+ snapshot <- CloneStack.cloneMyStack
+ bt <- if backtrace_desired
+ then do
+ cea <- getCollectExceptionAnnotationMechanism
+ ann <- ceaCollectExceptionAnnotationMechanism cea snapshot
+ return [ann]
+ else return []
+ anns <- stackAnnotationsFrom snapshot
+ return (bt ++ anns)
-- | Collect a set of 'Backtraces'.
collectBacktraces :: (?callStack :: CallStack) => IO Backtraces
-collectBacktraces = HCS.withFrozenCallStack $ do
- getEnabledBacktraceMechanisms >>= collectBacktraces'
+collectBacktraces = HCS.withFrozenCallStack $
+ CloneStack.cloneMyStack >>= collectBacktracesFrom
+
+collectBacktracesFrom
+ :: (?callStack :: CallStack)
+ => CloneStack.StackSnapshot -> IO Backtraces
+collectBacktracesFrom snapshot = HCS.withFrozenCallStack $ do
+ getEnabledBacktraceMechanisms >>= collectBacktraces' snapshot
collectBacktraces'
:: (?callStack :: CallStack)
- => EnabledBacktraceMechanisms -> IO Backtraces
-collectBacktraces' enabled = HCS.withFrozenCallStack $ do
+ => CloneStack.StackSnapshot -> EnabledBacktraceMechanisms -> IO Backtraces
+collectBacktraces' snapshot enabled = HCS.withFrozenCallStack $ do
let collect :: BacktraceMechanism -> IO (Maybe a) -> IO (Maybe a)
collect mech f
| backtraceMechanismEnabled mech enabled = f
@@ -189,8 +215,7 @@ collectBacktraces' enabled = HCS.withFrozenCallStack $ do
ExecStack.collectStackTrace
ipe <- collect IPEBacktrace $ do
- stack <- CloneStack.cloneMyStack
- return (Just stack)
+ return (Just snapshot)
hcs <- collect HasCallStackBacktrace $ do
return (Just ?callStack)
=====================================
libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs-boot
=====================================
@@ -4,8 +4,8 @@
module GHC.Internal.Exception.Backtrace where
import GHC.Internal.Stack.Types (HasCallStack)
-import GHC.Internal.Types (IO)
+import GHC.Internal.Types (Bool, IO)
import GHC.Internal.Exception.Context (SomeExceptionAnnotation)
-- For GHC.Exception
-collectExceptionAnnotation :: HasCallStack => IO SomeExceptionAnnotation
+collectExceptionContext :: HasCallStack => Bool -> IO [SomeExceptionAnnotation]
=====================================
libraries/ghc-internal/src/GHC/Internal/IO.hs
=====================================
@@ -54,8 +54,9 @@ import GHC.Internal.Classes ( Eq )
import GHC.Internal.Magic ( lazy )
import GHC.Internal.Maybe ( Maybe(..) )
import GHC.Internal.Prim (
- RealWorld, State#, catch#, getMaskingState#, maskAsyncExceptions#,
- maskUninterruptible#, raiseIO#, unmaskAsyncExceptions#,
+ RealWorld, State#, annotateStack#, catch#, getMaskingState#,
+ maskAsyncExceptions#, maskUninterruptible#, raiseIO#,
+ unmaskAsyncExceptions#,
)
import GHC.Internal.ST
import GHC.Internal.Types ( Char, IO(..) )
@@ -65,7 +66,8 @@ import GHC.Internal.Show
import GHC.Internal.IO.Unsafe
import GHC.Internal.Unsafe.Coerce ( unsafeCoerce )
-import GHC.Internal.Exception.Context ( ExceptionAnnotation )
+import GHC.Internal.Exception.Context ( ExceptionAnnotation, SomeExceptionAnnotation(..) )
+import GHC.Internal.Stack.Annotation ( SomeStackAnnotation(..) )
import GHC.Internal.Stack.Types ( HasCallStack )
import {-# SOURCE #-} GHC.Internal.Stack ( withFrozenCallStack )
import {-# SOURCE #-} GHC.Internal.IO.Exception ( userError, IOError )
@@ -245,9 +247,8 @@ catchAny !(IO io) handler = IO $ catch# io handler'
--
-- @since base-4.20.0.0
annotateIO :: forall e a. ExceptionAnnotation e => e -> IO a -> IO a
-annotateIO ann (IO io) = IO (catch# io handler)
- where
- handler se = raiseIO# (addExceptionContext ann se)
+annotateIO ann (IO io) =
+ IO (annotateStack# (SomeStackAnnotation (SomeExceptionAnnotation ann)) io)
-- Using catchException here means that if `m` throws an
-- 'IOError' /as an imprecise exception/, we will not catch
=====================================
libraries/ghc-internal/src/GHC/Internal/STM.hs
=====================================
@@ -29,16 +29,17 @@ import GHC.Internal.Base (
Monoid(..), Semigroup(..), ap, liftM2, ($), (.),
)
import GHC.Internal.Classes (Eq(..))
-import GHC.Internal.Exception (Exception, toExceptionWithBacktrace, fromException, addExceptionContext)
-import GHC.Internal.Exception.Context (ExceptionAnnotation)
+import GHC.Internal.Exception (Exception, toExceptionWithBacktrace, fromException)
+import GHC.Internal.Exception.Context (ExceptionAnnotation, SomeExceptionAnnotation(..))
import GHC.Internal.Exception.Type (WhileHandling(..))
import GHC.Internal.Maybe (Maybe(..))
import GHC.Internal.Prim (
- RealWorld, State#, TVar#, atomically#, catch#, catchRetry#, catchSTM#,
- newTVar#, raiseIO#, readTVar#, readTVarIO#, retry#, writeTVar#,
+ RealWorld, State#, TVar#, annotateStack#, atomically#, catchRetry#,
+ catchSTM#, newTVar#, raiseIO#, readTVar#, readTVarIO#, retry#, writeTVar#,
)
import GHC.Internal.Prim.PtrEq (sameTVar#)
import GHC.Internal.Stack (HasCallStack, withFrozenCallStack)
+import GHC.Internal.Stack.Annotation (SomeStackAnnotation(..))
import GHC.Internal.Types (IO(..), isTrue#)
-- TVars are shared memory locations which support atomic memory
@@ -217,9 +218,8 @@ catchSTM (STM m) handler = STM $ catchSTM# m handler'
-- | Execute an 'STM' action, adding the given 'ExceptionContext'
-- to any thrown synchronous exceptions.
annotateSTM :: forall e a. ExceptionAnnotation e => e -> STM a -> STM a
-annotateSTM ann (STM io) = STM (catch# io handler)
- where
- handler se = raiseIO# (addExceptionContext ann se)
+annotateSTM ann (STM io) =
+ STM (annotateStack# (SomeStackAnnotation (SomeExceptionAnnotation ann)) io)
-- |Shared memory locations that support atomic memory transactions.
data TVar a = TVar (TVar# RealWorld a)
=====================================
libraries/ghc-internal/src/GHC/Internal/Stack/Annotation.hs
=====================================
@@ -4,8 +4,10 @@ module GHC.Internal.Stack.Annotation where
import GHC.Internal.Base (String, (++))
import GHC.Internal.Data.Typeable
+import GHC.Internal.Exception.Context (SomeExceptionAnnotation(..), ExceptionAnnotation(..))
import GHC.Internal.Maybe (Maybe(..))
-import GHC.Internal.Stack (SrcLoc, prettySrcLoc)
+import GHC.Internal.Stack.Types (SrcLoc)
+import {-# SOURCE #-} GHC.Internal.Stack (prettySrcLoc)
-- ----------------------------------------------------------------------------
-- StackAnnotation
@@ -68,3 +70,7 @@ instance StackAnnotation SomeStackAnnotation where
displayStackAnnotationShort (SomeStackAnnotation a) =
displayStackAnnotationShort a
+
+instance StackAnnotation SomeExceptionAnnotation where
+ displayStackAnnotationShort (SomeExceptionAnnotation a) =
+ displayExceptionAnnotation a
=====================================
libraries/ghc-internal/src/GHC/Internal/Stack/Decode.hs
=====================================
@@ -19,6 +19,7 @@ module GHC.Internal.Stack.Decode (
decode,
decodeStack,
decodeStackWithIpe,
+ decodeStackAnnotations,
-- * Stack decoder helpers
decodeStackWithFrameUnpack,
-- * StackEntry
@@ -553,6 +554,26 @@ decodeStackWithIpe :: StackSnapshot -> IO [(StackFrame, Maybe InfoProv)]
decodeStackWithIpe snapshot =
concat . snd <$> decodeStackWithFrameUnpack unpackStackFrameWithIpe snapshot
+stackFrameInfoTable :: StackSnapshot# -> WordOffset -> IO StgInfoTable
+stackFrameInfoTable stackSnapshot# index =
+ case getInfoTableAddrs# stackSnapshot# (wordOffsetToWord# index) of
+ (# itbl#, _ #) -> peekItbl (Ptr itbl#)
+
+decodeStackAnnotations :: StackSnapshot -> IO [SomeStackAnnotation]
+decodeStackAnnotations snapshot =
+ concat . snd <$> decodeStackWithFrameUnpack unpackAnnotationFrame snapshot
+
+unpackAnnotationFrame :: StackFrameLocation -> IO [SomeStackAnnotation]
+unpackAnnotationFrame (StackSnapshot stackSnapshot#, index) = do
+ itbl <- stackFrameInfoTable stackSnapshot# index
+ case tipe itbl of
+ ANN_FRAME ->
+ case getClosureBox stackSnapshot# (index + offsetStgAnnFrameAnn) of
+ Box ann -> pure [unsafeCoerce ann]
+ UNDERFLOW_FRAME ->
+ decodeStackAnnotations (getUnderflowFrameNextChunk stackSnapshot# index)
+ _ -> pure []
+
-- ----------------------------------------------------------------------------
-- Write your own stack decoder!
-- ----------------------------------------------------------------------------
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/8229e600861665aa4e15023f38fdb94…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/8229e600861665aa4e15023f38fdb94…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0
[Git][ghc/ghc][wip/sand-witch/27423-gadt-parens] Parentheses in prefix GADT constructors (#27423)
by Andrei Borzenkov (@sand-witch) 11 Aug '26
by Andrei Borzenkov (@sand-witch) 11 Aug '26
11 Aug '26
Andrei Borzenkov pushed to branch wip/sand-witch/27423-gadt-parens at Glasgow Haskell Compiler / GHC
Commits:
53de859d by Andrei Borzenkov at 2026-08-11T11:50:00+04:00
Parentheses in prefix GADT constructors (#27423)
Updated `splitLHsGadtTy` to allow looking
through the parentheses for inner binders. General example
of a code pattern that's allowed now:
data S a where
MkS :: (forall a. S a)
That should work now with any combination of nested
foralls and parentheses.
We don't perform parenthesis unwrapping for record
GADT constructors in accordance with GHC Proposal #402.
To this end `con_inner_bndrs` no longer stores plain forall
telescopes: `[HsForAllTelescope pass]` is replaced with
`[LHsGadtArg pass]`, a new `HsArg`-style type whose
`HsGadtForAll` holds an inner telescope and whose `HsGadtPar`
holds a pair of parentheses. The parentheses carry no meaning
for renaming or type checking; the only reason to record them
is exact-printing.
Updated `pprConDecl` to improve the `parse == parse . ppr . parse`
property of GADT pretty-printing.
The pretty printer can now output code that's similar to this:
data T a where
MkT1 :: (forall a. T a)
MkT2 :: forall . forall a. T a
These are special cases of inner forall binders
for prefix GADT constructors, when we have either
implicit or zero explicit outer binders.
- - - - -
28 changed files:
- + changelog.d/allow-gadt-prefix-con-parens
- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Instances.hs
- compiler/GHC/Hs/Type.hs
- compiler/GHC/HsToCore/Quote.hs
- compiler/GHC/Iface/Ext/Ast.hs
- compiler/GHC/Rename/HsType.hs
- compiler/GHC/Rename/Module.hs
- compiler/GHC/Tc/Gen/HsType.hs
- compiler/GHC/Tc/TyCl.hs
- compiler/Language/Haskell/Syntax/Decls.hs
- compiler/Language/Haskell/Syntax/Type.hs
- − testsuite/tests/gadt/T14320.stderr
- testsuite/tests/gadt/T18191.hs
- testsuite/tests/gadt/T18191.stderr
- + testsuite/tests/gadt/T27423a.hs
- + testsuite/tests/gadt/T27423b.hs
- + testsuite/tests/gadt/T27423b.stderr
- testsuite/tests/gadt/all.T
- testsuite/tests/printer/Makefile
- + testsuite/tests/printer/T27423c.hs
- testsuite/tests/printer/all.T
- utils/check-exact/ExactPrint.hs
- utils/haddock/haddock-api/src/Haddock/Backends/Hoogle.hs
- utils/haddock/haddock-api/src/Haddock/Convert.hs
- utils/haddock/haddock-api/src/Haddock/GhcUtils.hs
- utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
- utils/haddock/haddock-api/src/Haddock/Types.hs
Changes:
=====================================
changelog.d/allow-gadt-prefix-con-parens
=====================================
@@ -0,0 +1,15 @@
+section: language
+synopsis: Allow parentheses in prefix GADT constructor declarations, as specified
+ by GHC Proposal #402 "Stable GADT constructor syntax".
+issues: #27423
+mrs: !16321
+
+description:
+ Parenthesized types are now accepted in prefix GADT constructor declarations,
+ even when they contain explicit ``forall`` quantifiers. For example:
+
+ data T where
+ MkT :: (forall a. a -> b -> T)
+
+ This is equivalent to ``MkT :: forall {b}. (forall a. a -> b -> T)``, so the
+ forall-or-nothing rule continues to be respected.
=====================================
compiler/GHC/Hs/Decls.hs
=====================================
@@ -974,14 +974,33 @@ pprConDecl (ConDeclGADT { con_names = cons
, con_mb_cxt = mcxt, con_g_args = args
, con_res_ty = res_ty, con_modifiers = mods, con_doc = doc })
= pprMaybeWithDoc doc $ pprLHsModifiers mods <+> ppr_con_names (toList cons) <+> dcolon
- <+> (sep [pprHsOuterSigTyVarBndrs outer_bndrs
- <+> hsep (map pprHsForAllTelescope inner_bndrs)
- <+> pprLHsContext mcxt,
- sep (ppr_args args ++ [ppr res_ty]) ])
+ <+> (ppr_outer_bndrs <+> ppr_inner_bndrs (
+ sep [ pprLHsContext mcxt,
+ sep (ppr_args args ++ [ppr res_ty])]))
where
ppr_args (PrefixConGADT _ args) = map (pprHsConDeclFieldWith (\arr tyDoc -> tyDoc <+> pprHsModifiedFunArr arr)) args
ppr_args (RecConGADT _ fields) = [pprHsConDeclRecFields (unLoc fields) <+> arrow]
+ -- pprint all parenthisis and foralls, so parse == parse . ppr . parse
+ ppr_inner_bndrs :: SDoc -> SDoc
+ ppr_inner_bndrs tyDoc = foldr ppr_inner_bndr (tyDoc <> close_parens) inner_bndrs
+
+ ppr_inner_bndr (L _ HsGadtPar{}) rest = lparen <> rest
+ ppr_inner_bndr (L _ (HsGadtForAll _ tele)) rest = pprHsForAllTelescope tele <+> rest
+
+ -- for each open paren generate a closed one
+ close_parens = hcat [ rparen | L _ HsGadtPar{} <- inner_bndrs ]
+
+ -- pprint empty explicit outer forall as `forall.` if there are inner binders, because otherwise
+ -- `forall. forall a. ...` would become `forall a. ...` and that would parse into
+ -- different AST, thus breaking parse == parse . ppr . parse property
+ ppr_outer_bndrs
+ | HsOuterExplicit{hso_bndrs = []} <- outer_bndrs
+ , not (null inner_bndrs)
+ = forAllLit <> dot
+ | otherwise
+ = pprHsOuterSigTyVarBndrs outer_bndrs
+
ppr_con_names :: (OutputableBndr a) => [GenLocated l a] -> SDoc
ppr_con_names = pprWithCommas (pprPrefixOcc . unLoc)
=====================================
compiler/GHC/Hs/Instances.hs
=====================================
@@ -623,6 +623,11 @@ deriving instance Data (HsForAllTelescope GhcPs)
deriving instance Data (HsForAllTelescope GhcRn)
deriving instance Data (HsForAllTelescope GhcTc)
+-- deriving instance (DataIdLR p p) => Data (HsGadtArg p)
+deriving instance Data (HsGadtArg GhcPs)
+deriving instance Data (HsGadtArg GhcRn)
+deriving instance Data (HsGadtArg GhcTc)
+
-- deriving instance (DataIdLR p p) => Data (HsTyVarBndr p)
deriving instance (Data flag) => Data (HsTyVarBndr flag GhcPs)
deriving instance (Data flag) => Data (HsTyVarBndr flag GhcRn)
=====================================
compiler/GHC/Hs/Type.hs
=====================================
@@ -39,6 +39,7 @@ module GHC.Hs.Type (
HsLit(..),
HsIPName(..), hsIPNameFS,
HsArg(..), numVisibleArgs, pprHsArgsApp,
+ HsGadtArg(..),
LHsTypeArg, lhsTypeArgSrcSpan,
OutputableBndrFlag,
@@ -71,6 +72,7 @@ module GHC.Hs.Type (
hsLTyVarName, hsLTyVarNames,
hsForAllTelescopeBndrs,
hsForAllTelescopeNames,
+ gadtArgTelescopes, gadtArgBndrs, mkHsGadtForAlls,
hsLTyVarLocName, hsExplicitLTyVarNames,
splitLHsInstDeclTy, getLHsInstDeclHead, getLHsInstDeclClass_maybe,
splitLHsPatSynTy,
@@ -622,6 +624,15 @@ hsForAllTelescopeNames :: HsForAllTelescope (GhcPass p) -> [IdP (GhcPass p)]
hsForAllTelescopeNames (HsForAllVis _ bndrs) = hsLTyVarNames bndrs
hsForAllTelescopeNames (HsForAllInvis _ bndrs) = hsLTyVarNames bndrs
+gadtArgTelescopes :: [LHsGadtArg (GhcPass p)] -> [HsForAllTelescope (GhcPass p)]
+gadtArgTelescopes args = [ tele | L _ (HsGadtForAll _ tele) <- args ]
+
+gadtArgBndrs :: [LHsGadtArg (GhcPass p)] -> [LHsTyVarBndr ForAllTyFlag (GhcPass p)]
+gadtArgBndrs = concatMap hsForAllTelescopeBndrs . gadtArgTelescopes
+
+mkHsGadtForAlls :: [HsForAllTelescope (GhcPass p)] -> [HsGadtArg (GhcPass p)]
+mkHsGadtForAlls = map (HsGadtForAll noExtField)
+
hsExplicitLTyVarNames :: LHsQTyVars (GhcPass p) -> [IdP (GhcPass p)]
-- Explicit variables only
hsExplicitLTyVarNames qtvs = hsLTyVarNames (hsQTvExplicit qtvs)
@@ -751,6 +762,14 @@ type instance XArgPar (GhcPass _) = SrcSpan
type instance XXArg (GhcPass _) = DataConCantHappen
+type instance XGadtForAll (GhcPass _) = NoExtField
+
+type instance XGadtPar GhcPs = (EpToken "(", EpToken ")")
+type instance XGadtPar GhcRn = NoExtField
+type instance XGadtPar GhcTc = NoExtField
+
+type instance XXGadtArg (GhcPass _) = DataConCantHappen
+
type instance XPrefixCon (GhcPass p) = NoExtField
type instance XInfixCon (GhcPass p) = NoExtField
type instance XRecCon (GhcPass p) = (EpToken "{", EpToken "}")
@@ -878,44 +897,55 @@ splitLHsSigmaTyInvis ty
= (tvs, ctxt, ty2)
-- | Decompose a GADT type into its constituent parts.
--- Returns @(outer_bndrs, mb_ctxt, body)@, where:
+-- Returns @(outer_bndrs, inner_bndrs, mb_ctxt, body)@, where:
--
-- * @outer_bndrs@ are 'HsOuterExplicit' if the type has explicit, outermost
-- type variable binders. Otherwise, they are 'HsOuterImplicit'.
--
+-- * @inner_bndrs@ are the remaining @forall@ telescopes, interleaved with the
+-- parentheses that enclose them.
+--
-- * @mb_ctxt@ is @Just@ the context, if it is provided.
-- Otherwise, it is @Nothing@.
--
-- * @body@ is the body of the type after the optional @forall@s and context.
--
--- This function is careful not to look through parentheses.
+-- This function does look through parentheses, but it does not discard them:
+-- they are syntactically significant, so they are recorded in @inner_bndrs@.
-- See @Note [GADT abstract syntax] (Wrinkle: No nested foralls or contexts)@
--- "GHC.Hs.Decls" for why this is important.
+-- in "GHC.Hs.Decls" for why this is important.
splitLHsGadtTy ::
LHsSigType GhcPs
- -> (HsOuterSigTyVarBndrs GhcPs, [HsForAllTelescope GhcPs], Maybe (LHsContext GhcPs), LHsType GhcPs)
+ -> (HsOuterSigTyVarBndrs GhcPs, [LHsGadtArg GhcPs], Maybe (LHsContext GhcPs), LHsType GhcPs)
splitLHsGadtTy (L _ sig_ty)
| (outer_bndrs, sigma_ty) <- split_outer_bndrs sig_ty
, (inner_bndrs, phi_ty) <- split_inner_bndrs sigma_ty
, (mb_ctxt, rho_ty) <- splitLHsQualTy_KP phi_ty
- = case rho_ty of
- L _ (HsFunTy _ _ (L _ (XHsType HsRecTy{})) _) | not (null inner_bndrs)
+ = if is_gadt_rec_ty rho_ty && not (null inner_bndrs)
-- Bad! Record GADTs are not allowed to have inner_bndrs,
-- undo the split to get a proper error message later
- -> (outer_bndrs, [], Nothing, sigma_ty)
- _ -> (outer_bndrs, inner_bndrs, mb_ctxt, rho_ty)
+ then (outer_bndrs, [], Nothing, sigma_ty)
+ else (outer_bndrs, inner_bndrs, mb_ctxt, rho_ty)
where
split_outer_bndrs :: HsSigType GhcPs -> (HsOuterSigTyVarBndrs GhcPs, LHsType GhcPs)
split_outer_bndrs (HsSig{sig_bndrs = outer_bndrs, sig_body = body_ty}) =
(outer_bndrs, body_ty)
- split_inner_bndrs :: LHsType GhcPs -> ([HsForAllTelescope GhcPs], LHsType GhcPs)
- split_inner_bndrs (L _ HsForAllTy { hst_tele = tele
+ split_inner_bndrs ::
+ LHsType GhcPs -> ([LHsGadtArg GhcPs], LHsType GhcPs)
+ split_inner_bndrs (L l HsForAllTy { hst_tele = tele
, hst_body = body })
- = let ~(teles, t) = split_inner_bndrs body
- in (tele:teles, t)
+ = let ~(args, t) = split_inner_bndrs body
+ in (L l (HsGadtForAll noExtField tele) : args, t)
+ split_inner_bndrs (L l (HsParTy toks ty))
+ = let ~(args, t) = split_inner_bndrs ty
+ in (L l (HsGadtPar toks) : args, t)
split_inner_bndrs t = ([], t)
+ -- type of form {fld :: ty, ...} -> ResTy
+ is_gadt_rec_ty (L _ (HsFunTy _ _ (L _ (XHsType HsRecTy{})) _)) = True
+ is_gadt_rec_ty _ = False
+
-- | Decompose a type of the form @forall <tvs>. body@ into its constituent
-- parts. Only splits type variable binders that
-- were quantified invisibly (e.g., @forall a.@, with a dot).
@@ -1284,6 +1314,11 @@ instance OutputableBndrId p
ppr (HsForAllInvis { hsf_invis_bndrs = bndrs }) =
text "HsForAllInvis:" <+> ppr bndrs
+instance OutputableBndrId p
+ => Outputable (HsGadtArg (GhcPass p)) where
+ ppr (HsGadtForAll _ tele) = text "HsGadtForAll" <+> ppr tele
+ ppr (HsGadtPar _) = text "HsGadtPar"
+
instance (OutputableBndrId p, OutputableBndrFlag flag p)
=> Outputable (HsTyVarBndr flag (GhcPass p)) where
ppr = pprTyVarBndr
@@ -1612,3 +1647,5 @@ type instance Anno (HsConDeclRecField (GhcPass p)) = SrcSpanAnnA
type instance Anno (FieldOcc (GhcPass p)) = SrcSpanAnnA
type instance Anno (HsModifierOf ty (GhcPass p)) = SrcSpanAnnA
+
+type instance Anno (HsGadtArg (GhcPass p)) = SrcSpanAnnA
=====================================
compiler/GHC/HsToCore/Quote.hs
=====================================
@@ -920,11 +920,13 @@ repC (L l (ConDeclGADT { con_names = cons
= notHandledL (locA l) ThDataConVisibleForall
where
- no_explicit_forall = nullOuterExplicit outer_bndrs && null inner_bndrs
+ inner_teles = gadtArgTelescopes inner_bndrs
+
+ no_explicit_forall = nullOuterExplicit outer_bndrs && null inner_teles
no_context = isNothing mcxt
m_invis_inner_bndrs :: Maybe [[LHsTyVarBndr Specificity GhcRn]]
- m_invis_inner_bndrs = traverse get_invis_bndrs inner_bndrs
+ m_invis_inner_bndrs = traverse get_invis_bndrs inner_teles
get_invis_bndrs :: HsForAllTelescope GhcRn -> Maybe [LHsTyVarBndr Specificity GhcRn]
get_invis_bndrs HsForAllVis{} = Nothing
=====================================
compiler/GHC/Iface/Ext/Ast.hs
=====================================
@@ -1788,7 +1788,7 @@ instance ToHie (LocatedA (ConDecl GhcRn)) where
HsOuterExplicit{} -> []
exp_bndrs =
[ L l (updateHsTyVarBndrFlag Invisible b) | L l b <- hsOuterExplicitBndrs outer_bndrs ]
- ++ concatMap hsForAllTelescopeBndrs inner_bndrs
+ ++ concatMap hsForAllTelescopeBndrs (gadtArgTelescopes inner_bndrs)
ConDeclH98 { con_name = name, con_ex_tvs = qvars
, con_mb_cxt = ctx, con_args = dets
, con_doc = doc} ->
=====================================
compiler/GHC/Rename/HsType.hs
=====================================
@@ -28,8 +28,7 @@ module GHC.Rename.HsType (
checkPrecMatch, checkSectionPrec,
-- Binding related stuff
- bindHsOuterTyVarBndrs, bindHsForAllTelescope,
- bindHsForAllTelescopes,
+ bindHsOuterTyVarBndrs, bindHsForAllTelescope, bindHsGadtArgs,
bindLHsTyVarBndr, bindLHsTyVarBndrs, WarnUnusedForalls(..),
rnImplicitTvOccs, bindSigTyVarsFV, bindHsQTyVars,
FreeKiTyVars, filterInScopeM,
@@ -37,7 +36,7 @@ module GHC.Rename.HsType (
extractHsTysRdrTyVars, extractRdrKindSigVars,
extractConDeclGADTDetailsTyVars, extractDataDefnKindVars,
extractHsOuterTvBndrs, extractHsTyArgRdrKiTyVars,
- extractHsForAllTelescopes,
+ extractHsGadtArgs,
nubL, nubN,
-- Error helpers
@@ -1241,16 +1240,19 @@ bindHsForAllTelescope doc tele thing_inside =
checkForAllTelescopeWildcardBndrs doc bndrs'
thing_inside $ mkHsForAllInvisTele noAnn bndrs'
-bindHsForAllTelescopes :: HsDocContext
- -> [HsForAllTelescope GhcPs]
- -> ([HsForAllTelescope GhcRn] -> RnM (a, FreeNames))
- -> RnM (a, FreeNames)
-bindHsForAllTelescopes _ [] thing_inside =
+bindHsGadtArgs :: HsDocContext
+ -> [LHsGadtArg GhcPs]
+ -> ([LHsGadtArg GhcRn] -> RnM (a, FreeNames))
+ -> RnM (a, FreeNames)
+bindHsGadtArgs _ [] thing_inside =
thing_inside []
-bindHsForAllTelescopes doc (tele:teles) thing_inside =
- bindHsForAllTelescope doc tele $ \tele' ->
- bindHsForAllTelescopes doc teles $ \teles' ->
- thing_inside (tele':teles')
+bindHsGadtArgs doc (L l HsGadtPar{} : args) thing_inside =
+ bindHsGadtArgs doc args $ \args' ->
+ thing_inside (L l (HsGadtPar noExtField) : args')
+bindHsGadtArgs doc (L l (HsGadtForAll _ tele) : args) thing_inside =
+ bindHsForAllTelescope doc tele $ \tele' ->
+ bindHsGadtArgs doc args $ \args' ->
+ thing_inside (L l (HsGadtForAll noExtField tele') : args')
-- See Note [Wildcard binders in disallowed contexts] in GHC.Hs.Type
checkForAllTelescopeWildcardBndrs :: HsDocContext
@@ -2277,13 +2279,15 @@ extractHsOuterTvBndrs outer_bndrs body_fvs =
HsOuterImplicit{} -> body_fvs
HsOuterExplicit{hso_bndrs = bndrs} -> extract_hs_tv_bndrs bndrs [] body_fvs
-extractHsForAllTelescopes :: [HsForAllTelescope GhcPs]
- -> FreeKiTyVars -- Free in body
- -> FreeKiTyVars -- Free in result
-extractHsForAllTelescopes [] body_fvs = body_fvs
-extractHsForAllTelescopes (tele:teles) body_fvs =
+extractHsGadtArgs :: [LHsGadtArg GhcPs]
+ -> FreeKiTyVars -- Free in body
+ -> FreeKiTyVars -- Free in result
+extractHsGadtArgs [] body_fvs = body_fvs
+extractHsGadtArgs (L _ HsGadtPar{} : args) body_fvs =
+ extractHsGadtArgs args body_fvs
+extractHsGadtArgs (L _ (HsGadtForAll _ tele) : args) body_fvs =
extract_hs_for_all_telescope tele [] $
- extractHsForAllTelescopes teles body_fvs
+ extractHsGadtArgs args body_fvs
extract_hs_tv_bndrs :: [LHsTyVarBndr flag GhcPs]
-> FreeKiTyVars -- Accumulator
=====================================
compiler/GHC/Rename/Module.hs
=====================================
@@ -2641,7 +2641,7 @@ rnConDecl (ConDeclGADT { con_names = names
-- See #14808.
implicit_bndrs =
extractHsOuterTvBndrs outer_bndrs $
- extractHsForAllTelescopes inner_bndrs $
+ extractHsGadtArgs inner_bndrs $
extractHsTysRdrTyVars (hsConDeclTheta mcxt) $
extractConDeclGADTDetailsTyVars args $
extractHsTysRdrTyVars [res_ty] []
@@ -2649,7 +2649,7 @@ rnConDecl (ConDeclGADT { con_names = names
; let ctxt = ConDeclCtx (toList new_names)
; bindHsOuterTyVarBndrs ctxt Nothing implicit_bndrs outer_bndrs $ \outer_bndrs' ->
- bindHsForAllTelescopes ctxt inner_bndrs $ \inner_bndrs' ->
+ bindHsGadtArgs ctxt inner_bndrs $ \inner_bndrs' ->
do { (new_cxt, fvs1) <- rnMbContext ctxt mcxt
; (new_args, fvs2) <- rnConDeclGADTDetails (unLoc (head new_names)) ctxt args
; (new_res_ty, fvs3) <- rnLHsType ctxt res_ty
=====================================
compiler/GHC/Tc/Gen/HsType.hs
=====================================
@@ -3546,12 +3546,12 @@ tcOuterTKBndrsX skol_mode skol_info outer_bndrs thing_inside
---------------
tcGadtConTyVarBndrs :: SkolemInfo
-> HsOuterSigTyVarBndrs GhcRn
- -> [HsForAllTelescope GhcRn]
+ -> [LHsGadtArg GhcRn]
-> TcM a -> TcM ([TcTyVarBinder], a)
tcGadtConTyVarBndrs skol_info outer inner thing_inside
= do { (outer_bndrs, (inner_tvbs, a)) <-
tcOuterTKBndrs skol_info outer $
- tcExplicitTKBndrs skol_info (concatMap hsForAllTelescopeBndrs inner) $
+ tcExplicitTKBndrs skol_info (gadtArgBndrs inner) $
thing_inside
; outer_bndrs <- scopedSortOuter outer_bndrs
; let outer_tvbs = tyVarSpecToBinders (outerTyVarBndrs outer_bndrs)
=====================================
compiler/GHC/Tc/TyCl.hs
=====================================
@@ -2287,7 +2287,7 @@ kcConDecl new_or_data _tc_res_kind
bind_con_tvbs outer_bndrs inner_bndrs thing_inside
-- Why "_Tv"? See Note [Using TyVarTvs for kind-checking GADTs]
= discardResult $ bindOuterSigTKBndrs_Tv outer_bndrs $
- bindExplicitTKBndrs_Tv (concatMap hsForAllTelescopeBndrs inner_bndrs) $
+ bindExplicitTKBndrs_Tv (gadtArgBndrs inner_bndrs) $
thing_inside
{- Note [kcConDecls: kind-checking data type decls]
=====================================
compiler/Language/Haskell/Syntax/Decls.hs
=====================================
@@ -961,8 +961,9 @@ data ConDecl pass
-- cf. HsSigType that also stores the outermost sig_bndrs separately
-- from the forall telescopes in sig_body.
-- See Note [Representing type signatures] in Language.Haskell.Syntax.Type
- , con_inner_bndrs :: [HsForAllTelescope pass]
- -- ^ The forall telescopes other than the outermost invisible forall.
+ , con_inner_bndrs :: [LHsGadtArg pass]
+ -- ^ The forall telescopes other than the outermost invisible forall,
+ -- interleaved with the parentheses that enclose them.
, con_mb_cxt :: Maybe (LHsContext pass) -- ^ User-written context (if any)
, con_g_args :: HsConDeclGADTDetails pass -- ^ Arguments; never infix
, con_res_ty :: LHsType pass -- ^ Result type
@@ -1074,22 +1075,21 @@ the GADT type, in precisely that order. For instance:
MkT5 :: forall a. Int -> Eq a => a -> T
-- Rejected, `Eq a` is nested
MkT6 :: (forall a. a -> T)
- -- Rejected, `forall a` is nested due to the surrounding parentheses
- MkT7 :: (Eq a => a -> t)
- -- Rejected, `Eq a` is nested due to the surrounding parentheses
+ -- OK, the parentheses are recorded in con_inner_bndrs.
+ MkT7 :: (Eq a => a -> T)
+ -- OK, ditto
For the full details, see the "Formal syntax for GADTs" section of the GHC
User's Guide. GHC enforces that GADT constructors do not have nested `forall`s
or contexts in two parts:
1. GHC, in the process of splitting apart a GADT's type,
- extracts out the leading `forall` and context (if they are provided). To
- accomplish this splitting, the renamer uses the
- GHC.Hs.Type.splitLHsGADTPrefixTy function, which is careful not to remove
- parentheses surrounding the leading `forall` or context (as these
- parentheses can be syntactically significant). If the third result returned
- by splitLHsGADTPrefixTy contains any `forall`s or contexts, then they must
- be nested, so they will be rejected.
+ extracts out the leading `forall`s and context (if they are provided). To
+ accomplish this splitting, the parser uses the GHC.Hs.Type.splitLHsGadtTy
+ function, which records the parentheses that surround the leading `forall`s
+ in con_inner_bndrs (as these parentheses are syntactically significant).
+ If the body returned by splitLHsGadtTy still contains any `forall`s or
+ contexts, then they must be nested, so they will be rejected.
Note that this step applies to both prefix and record GADTs alike, as they
both have syntax which permits `forall`s and contexts. The difference is
=====================================
compiler/Language/Haskell/Syntax/Type.hs
=====================================
@@ -21,6 +21,7 @@ module Language.Haskell.Syntax.Type (
isHsBndrInvisible,
isHsBndrWildCard,
HsForAllTelescope(..),
+ HsGadtArg(..), LHsGadtArg, XGadtForAll, XGadtPar, XXGadtArg,
HsTyVarBndr(..), LHsTyVarBndr,
LHsQTyVars(..),
HsOuterTyVarBndrs(..), HsOuterFamEqnTyVarBndrs, HsOuterSigTyVarBndrs,
@@ -392,6 +393,41 @@ data HsForAllTelescope pass
}
| XHsForAllTelescope !(XXHsForAllTelescope pass)
+-- A type for interleaved GADT foralls and prefixes, inspired by HsArg
+--
+-- `HsGadtPar` is only usefull for pretty-printing/exact-printing for recovering
+-- parenthisis interleaved with foralls.
+--
+-- Here's an example:
+--
+-- data D where
+-- MkD :: forall a b. ( forall c. forall d. ( forall. ...
+-- ↑ ↑ ↑ ↑ ↑ ↑
+-- 1 2 3 4 5 6
+--
+-- That would correspond to a list
+--
+-- 1 → [ HsGadtForAll
+-- 2 → , HsGadtPar
+-- 3 → , HsGadtForAll
+-- 4 → , HsGadtForAll
+-- 5 → , HsGadtPar
+-- 6 → , HsGadtForAll
+-- , ...]
+--
+-- We can always recover parenthisis structure because they must close after
+-- return type.
+data HsGadtArg pass
+ = HsGadtForAll !(XGadtForAll pass) (HsForAllTelescope pass)
+ | HsGadtPar !(XGadtPar pass)
+ | XHsGadtArg !(XXGadtArg pass)
+
+type LHsGadtArg pass = XRec pass (HsGadtArg pass)
+
+type family XGadtForAll pass
+type family XGadtPar pass
+type family XXGadtArg pass
+
-- | Located Haskell Type Variable Binder
type LHsTyVarBndr flag pass = XRec pass (HsTyVarBndr flag pass)
-- See Note [HsType binders]
=====================================
testsuite/tests/gadt/T14320.stderr deleted
=====================================
@@ -1,4 +0,0 @@
-
-T14320.hs:17:14: error: [GHC-71492]
- GADT constructor type signature cannot contain nested ‘forall’s or contexts
- In the definition of data constructor ‘TEBad’
=====================================
testsuite/tests/gadt/T18191.hs
=====================================
@@ -2,15 +2,6 @@
{-# LANGUAGE RankNTypes #-}
module T18191 where
-data T where
- MkT :: (forall a. a -> b -> T)
-
-data S a where
- MkS :: (forall a. S a)
-
-data U a where
- MkU :: (Show a => U a)
-
data Z a where
MkZ1 :: forall a. forall b. { unZ1 :: (a, b) } -> Z (a, b)
MkZ2 :: Eq a => Eq b => { unZ1 :: (a, b) } -> Z (a, b)
=====================================
testsuite/tests/gadt/T18191.stderr
=====================================
@@ -1,28 +1,16 @@
-
-T18191.hs:6:11: error: [GHC-71492]
- • GADT constructor type signature cannot contain nested ‘forall’s or contexts
- • In the definition of data constructor ‘MkT’
-
-T18191.hs:9:11: error: [GHC-71492]
- • GADT constructor type signature cannot contain nested ‘forall’s or contexts
- • In the definition of data constructor ‘MkS’
-
-T18191.hs:12:11: error: [GHC-71492]
- • GADT constructor type signature cannot contain nested ‘forall’s or contexts
- • In the definition of data constructor ‘MkU’
-
-T18191.hs:15:21: error: [GHC-71492]
+T18191.hs:6:21: error: [GHC-71492]
• GADT constructor type signature cannot contain nested ‘forall’s or contexts
• In the definition of data constructor ‘MkZ1’
-T18191.hs:15:31: error: [GHC-89246]
+T18191.hs:6:31: error: [GHC-89246]
• Record syntax is illegal here: {unZ1 :: (a, b)}
• In the definition of data constructor ‘MkZ1’
-T18191.hs:16:19: error: [GHC-71492]
+T18191.hs:7:19: error: [GHC-71492]
• GADT constructor type signature cannot contain nested ‘forall’s or contexts
• In the definition of data constructor ‘MkZ2’
-T18191.hs:16:27: error: [GHC-89246]
+T18191.hs:7:27: error: [GHC-89246]
• Record syntax is illegal here: {unZ1 :: (a, b)}
• In the definition of data constructor ‘MkZ2’
+
=====================================
testsuite/tests/gadt/T27423a.hs
=====================================
@@ -0,0 +1,46 @@
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE RequiredTypeArguments #-}
+module T27423a where
+
+data G a where
+ MkG1 :: a -> G a
+ MkG2 :: (a -> G a)
+ MkG3 :: forall a. a -> G a
+ MkG4 :: forall a. (a -> G a)
+
+-- this is equivalent to `forall {b}. (forall a. a -> b -> T)`.
+data T where
+ MkT2 :: (forall a. a -> b -> T)
+
+-- this is equivalent to `forall. (forall a. S a)`.
+data S a where
+ MkS :: (forall a. S a)
+
+-- An explicit, empty outer forall combined with a parenthesised inner one.
+data W a where
+ MkW :: forall. (forall a. W a)
+
+-- A forall and a context combined inside the same parentheses, with no
+-- outer forall at all.
+data Y a where
+ MkY :: (forall a. Show a => a -> Y a)
+
+-- Multiple, redundant nested parentheses around the whole type should
+-- be accepted.
+data H a where
+ MkH :: ((a -> H a))
+
+-- An unparenthesised outer forall together with an independent,
+-- parenthesised inner forall.
+data I a where
+ MkI :: forall a. (forall b. I (b, a))
+
+-- Visible foralls, parenthesised and not.
+data V a b where
+ MkV1 :: forall a -> forall b. (Int -> V a b)
+ MkV2 :: forall a. (forall b -> (Bool -> V a b))
+
+data P a where
+ MkP1 :: Show a => (a -> P a)
+ MkP2 :: forall a. Int -> (a -> P a)
+ MkP3 :: (forall a. Show a => (Int -> (a -> P a)))
=====================================
testsuite/tests/gadt/T27423b.hs
=====================================
@@ -0,0 +1,21 @@
+{-# LANGUAGE GADTs #-}
+module T27423b where
+
+-- Record-style GADT constructors must remain unparenthesisable, per
+-- GHC Proposal #402: this is out of scope for #27423 and should
+-- continue to be rejected.
+data T1 a where
+ MkT1 :: ({ fld :: a } -> T1 a)
+
+data T2 a where
+ MkT2 :: (forall a. { fld :: a } -> T2 a)
+
+-- Without parentheses, forall-or-nothing applies to the whole type, so
+-- `b` is not implicitly quantified and this must be rejected.
+data T3 where
+ MkT3 :: forall a. a -> b -> T3
+
+-- That should gone soon, but let's check that we didn't implement it
+-- earlier than we need to
+data T4 a where
+ MkT4 :: Show a => (forall b. a -> b -> T4 a)
=====================================
testsuite/tests/gadt/T27423b.stderr
=====================================
@@ -0,0 +1,19 @@
+T27423b.hs:8:12: error: [GHC-89246]
+ • Record syntax is illegal here: {fld :: a}
+ • In the definition of data constructor ‘MkT1’
+
+T27423b.hs:11:12: error: [GHC-71492]
+ • GADT constructor type signature cannot contain nested ‘forall’s or contexts
+ • In the definition of data constructor ‘MkT2’
+
+T27423b.hs:11:22: error: [GHC-89246]
+ • Record syntax is illegal here: {fld :: a}
+ • In the definition of data constructor ‘MkT2’
+
+T27423b.hs:16:26: error: [GHC-76037]
+ Not in scope: type variable ‘b’
+
+T27423b.hs:21:22: error: [GHC-71492]
+ • GADT constructor type signature cannot contain nested ‘forall’s or contexts
+ • In the definition of data constructor ‘MkT4’
+
=====================================
testsuite/tests/gadt/all.T
=====================================
@@ -114,7 +114,7 @@ test('T7558', normal, compile, [''])
test('T9380', normal, compile_and_run, [''])
test('T12087', normal, compile_fail, [''])
test('T12468', normal, compile_fail, [''])
-test('T14320', normal, compile_fail, [''])
+test('T14320', normal, compile, [''])
test('T14719', normal, compile_fail, ['-fdiagnostics-show-caret'])
test('T14808', normal, compile, [''])
test('T15009', normal, compile, [''])
@@ -132,3 +132,6 @@ test('T19847b', normal, compile, [''])
test('T23022', normal, compile, ['-dcore-lint'])
test('T23023', normal, compile_fail, ['-O -dcore-lint']) # todo: move this test?
test('T23298', normal, compile_fail, [''])
+
+test('T27423a', normal, compile, [''])
+test('T27423b', normal, compile_fail, [''])
=====================================
testsuite/tests/printer/Makefile
=====================================
@@ -932,3 +932,8 @@ PprModifiers:
PprQualifiedStrings:
$(CHECK_PPR) $(LIBDIR) PprQualifiedStrings.hs
$(CHECK_EXACT) $(LIBDIR) PprQualifiedStrings.hs
+
+.PHONY: T27423c
+T27423c:
+ $(CHECK_PPR) $(LIBDIR) T27423c.hs
+ $(CHECK_EXACT) $(LIBDIR) T27423c.hs
=====================================
testsuite/tests/printer/T27423c.hs
=====================================
@@ -0,0 +1,45 @@
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE RequiredTypeArguments #-}
+module T27423c where
+
+-- Exact-printing regression test
+-- Not every declaration there would pass renamer without errors
+data G a where
+ MkG1 :: a -> G a
+ MkG2 :: (a -> G a)
+ MkG3 :: forall a. a -> G a
+ MkG4 :: forall a. (a -> G a)
+
+data T where
+ MkT1 :: forall a. a -> b -> T
+ MkT2 :: (forall a. a -> b -> T)
+
+data S a where
+ MkS :: (forall a. S a)
+ MkS2 :: forall. (forall a. S a)
+ MkS3 :: forall. forall a. S a
+
+data U a where
+ MkU :: (Show a => U a)
+
+data V a where
+ MkV1 :: ((a -> V a))
+ MkV2 :: forall a. (forall b. V (b, a))
+ MkV3 :: (forall a. Show a => a -> V a)
+ MkV4 :: forall a. ((forall b. (Show a => a -> (b -> V a))))
+
+data W a b where
+ MkW1 :: forall a -> forall b. (Int -> W a b)
+ MkW2 :: forall a. (forall b -> (Bool -> W a b))
+
+data P a where
+ MkP1 :: Show a => (a -> P a)
+ MkP2 :: forall a. Int -> (a -> P a)
+
+-- Comments in and around the parentheses
+data C a where
+ MkC1 :: -- comment before the parenthesis
+ (forall a. C a)
+ MkC2 :: ( -- comment after the parenthesis
+ forall a. C a)
+ MkC3 :: (forall a. {- inline comment -} C a)
=====================================
testsuite/tests/printer/all.T
=====================================
@@ -223,3 +223,5 @@ test('TestLevelImports', [ignore_stderr, req_ppr_deps], makefile_test, ['TestLev
test('TestNamedDefaults', [ignore_stderr, req_ppr_deps], makefile_test, ['TestNamedDefaults'])
test('PprModifiers', [ignore_stderr,req_ppr_deps], makefile_test, ['PprModifiers'])
test('PprQualifiedStrings', [ignore_stderr,req_ppr_deps], makefile_test, ['PprQualifiedStrings'])
+
+test('T27423c', [ignore_stderr,req_ppr_deps], makefile_test, ['T27423c'])
=====================================
utils/check-exact/ExactPrint.hs
=====================================
@@ -374,6 +374,9 @@ cua CanUpdateAnchor f = f
cua CanUpdateAnchorOnly _ = return []
cua NoCanUpdateAnchor _ = return []
+enterAnn :: (Monad m, Monoid w, ExactPrint a) => Entry -> a -> EP w m a
+enterAnn = enterAnnWith exact setAnnotationAnchor
+
-- | "Enter" an annotation, by using the associated 'anchor' field as
-- the new reference point for calculating all DeltaPos positions.
-- This is the heart of the exact printing process.
@@ -381,14 +384,17 @@ cua NoCanUpdateAnchor _ = return []
-- This is combination of the ghc=exactprint Delta.withAST and
-- Print.exactPC functions and effectively does the delta processing
-- immediately followed by the print processing. JIT ghc-exactprint.
-enterAnn :: (Monad m, Monoid w, ExactPrint a) => Entry -> a -> EP w m a
-enterAnn NoEntryVal a = do
+enterAnnWith :: (Monad m, Monoid w, Typeable a, Typeable b) =>
+ (a -> EP w m b) -> -- exact
+ (b -> EpaLocation -> [TrailingAnn] -> EpAnnComments -> b) -> -- setAnnotationAnchor
+ Entry -> a -> EP w m b
+enterAnnWith exactVia _ NoEntryVal a = do
p <- getPosP
debugM $ "enterAnn:starting:NO ANN:(p,a) =" ++ show (p, astId a)
- r <- exact a
+ r <- exactVia a
debugM $ "enterAnn:done:NO ANN:p =" ++ show (p, astId a)
return r
-enterAnn !(Entry anchor' trailing_anns cs flush canUpdateAnchor) a = do
+enterAnnWith exactVia setAnnAnchor !(Entry anchor' trailing_anns cs flush canUpdateAnchor) a = do
acceptSpan <- getAcceptSpan
setAcceptSpan False
case anchor' of
@@ -499,7 +505,7 @@ enterAnn !(Entry anchor' trailing_anns cs flush canUpdateAnchor) a = do
advance edp
debugM $ "enterAnn:exact a starting:" ++ show (showAst anchor')
- a' <- exact a
+ a' <- exactVia a
debugM $ "enterAnn:exact a done:" ++ show (showAst anchor')
-- Core recursive exactprint done, start end of Entry processing
@@ -553,8 +559,8 @@ enterAnn !(Entry anchor' trailing_anns cs flush canUpdateAnchor) a = do
EpaSpan s -> EpaDelta s edp []
_ -> EpaDelta noSrcSpan edp []
let r = case canUpdateAnchor of
- CanUpdateAnchor -> setAnnotationAnchor a' newAnchor trailing' (mkEpaComments priorCs postCs)
- CanUpdateAnchorOnly -> setAnnotationAnchor a' newAnchor [] emptyComments
+ CanUpdateAnchor -> setAnnAnchor a' newAnchor trailing' (mkEpaComments priorCs postCs)
+ CanUpdateAnchorOnly -> setAnnAnchor a' newAnchor [] emptyComments
NoCanUpdateAnchor -> a'
return r
@@ -4268,21 +4274,22 @@ instance ExactPrint (ConDecl GhcPs) where
L _ (HsOuterImplicit _) -> return outer_bndrs
_ -> markAnnotated outer_bndrs
- inner_bndrs' <- mapM markAnnotated inner_bndrs
+ (inner_bndrs', (mcxt', args', res_ty')) <- markGadtArgs inner_bndrs $ do
+ mcxt' <- markAnnotated mcxt
+ args' <-
+ case args of
+ (PrefixConGADT x args0) -> do
+ args0' <- mapM markAnnotated args0
+ return (PrefixConGADT x args0')
+ (RecConGADT (oc,cc,rarr) fields) -> do
+ oc' <- markEpToken oc
+ fields' <- markAnnotated fields
+ cc' <- markEpToken cc
+ rarr' <- markEpUniToken rarr
+ return (RecConGADT (oc',cc',rarr') fields')
+ res_ty' <- markAnnotated res_ty
+ return (mcxt', args', res_ty')
- mcxt' <- markAnnotated mcxt
- args' <-
- case args of
- (PrefixConGADT x args0) -> do
- args0' <- mapM markAnnotated args0
- return (PrefixConGADT x args0')
- (RecConGADT (oc,cc,rarr) fields) -> do
- oc' <- markEpToken oc
- fields' <- markAnnotated fields
- cc' <- markEpToken cc
- rarr' <- markEpUniToken rarr
- return (RecConGADT (oc',cc',rarr') fields')
- res_ty' <- markAnnotated res_ty
return (ConDeclGADT { con_g_ext = AnnConDeclGADT [] [] dcol'
, con_names = cons'
, con_outer_bndrs = outer_bndrs'
@@ -4291,6 +4298,44 @@ instance ExactPrint (ConDecl GhcPs) where
, con_modifiers = mods'
, con_res_ty = res_ty', con_doc = doc })
+-- | Exact print the inner binders of a GADT signature.
+--
+-- It's that complicated because we need to mark comments/trailing anns
+-- stored inside `L` and mark closing parenthesis _after_ we mark inner
+-- type:
+--
+-- data T a b where
+-- MkT ::
+-- forall a. ( -- mark inside `markGadtArgs`
+-- forall b. some type -> T a b -- mark everything there
+-- ) -- mark inside `markGadtArgs`
+--
+-- We don't have the same problem for `HsArgPar` because we ignore it
+-- during exact-print, "Does not appear in original source"
+markGadtArgs :: (Monad m, Monoid w, Typeable a)
+ => [LHsGadtArg GhcPs] -> EP w m a
+ -> EP w m ([LHsGadtArg GhcPs], a)
+markGadtArgs args inner_action = go args
+ where
+ go [] = do
+ r <- inner_action
+ return ([], r)
+ go (arg:xs) = enterAnnWith (exact_arg xs) setAnchor (entryFromLocatedA arg) arg
+
+ exact_arg xs (L l (HsGadtForAll _ tele)) = do
+ tele' <- markAnnotated tele
+ (xs', r) <- go xs
+ return (L l (HsGadtForAll noExtField tele') : xs', r)
+ exact_arg xs (L l (HsGadtPar (lp, rp))) = do
+ lp' <- markEpToken lp
+ (xs', r) <- go xs
+ rp' <- markEpToken rp
+ return (L l (HsGadtPar (lp',rp')) : xs', r)
+
+ -- The binder just entered is the head of the returned list
+ setAnchor (arg':xs', r) anc ts cs = (setAnchorAn arg' anc ts cs : xs', r)
+ setAnchor ([], r) _ _ _ = ([], r)
+
-- ---------------------------------------------------------------------
instance ExactPrint Void where
=====================================
utils/haddock/haddock-api/src/Haddock/Backends/Hoogle.hs
=====================================
@@ -350,7 +350,7 @@ ppCtor
typeSig = operator name ++ " :: " ++ outHsSigType sDocContext con_sig_ty
name = out sDocContext $ unL <$> names
con_sig_ty = HsSig noExtField outer_bndrs $
- mkForallTys inner_bndrs phi_ty
+ mkGadtArgTys inner_bndrs phi_ty
where
phi_ty = case mcxt of
Just theta -> mkQualTy theta tau_ty
@@ -367,13 +367,14 @@ ppCtor
noLocA (HsQualTy{ hst_xqual = noExtField
, hst_ctxt = ctxt, hst_body = body})
- mkForallTy :: HsForAllTelescope GhcRn -> LHsType GhcRn -> LHsType GhcRn
- mkForallTy tele body =
- noLocA (HsForAllTy { hst_xforall = noExtField
+ mkGadtArgTy :: LHsGadtArg GhcRn -> LHsType GhcRn -> LHsType GhcRn
+ mkGadtArgTy (L l (HsGadtForAll _ tele)) body =
+ L l (HsForAllTy { hst_xforall = noExtField
, hst_tele = tele, hst_body = body })
+ mkGadtArgTy (L l HsGadtPar{}) body = L l (HsParTy noAnn body)
- mkForallTys :: [HsForAllTelescope GhcRn] -> LHsType GhcRn -> LHsType GhcRn
- mkForallTys = flip (foldr mkForallTy)
+ mkGadtArgTys :: [LHsGadtArg GhcRn] -> LHsType GhcRn -> LHsType GhcRn
+ mkGadtArgTys = flip (foldr mkGadtArgTy)
ppFixity :: SDocContext -> (Name, Fixity) -> [String]
ppFixity sDocContext (name, fixity) = [out sDocContext ((FixitySig noExtField (NoNamespaceSpecifier noExtField) [noLocA name] fixity) :: FixitySig GhcRn)]
=====================================
utils/haddock/haddock-api/src/Haddock/Convert.hs
=====================================
@@ -567,7 +567,7 @@ synifyDataCon use_gadt_syntax dc =
, hso_bndrs = map synifyTyVarBndr outer_tvbs
}
- inner_bndrs = mk_telescopes inner_tvbs
+ inner_bndrs = map noLocA $ mkHsGadtForAlls (mk_telescopes inner_tvbs)
mk_telescopes bs
| (invis, other) <- split_invis_tvbs bs, not (null invis)
=====================================
utils/haddock/haddock-api/src/Haddock/GhcUtils.hs
=====================================
@@ -229,7 +229,7 @@ getGADTConType
( HsSig
{ sig_ext = noExtField
, sig_bndrs = unLoc outer_bndrs
- , sig_body = mkForallTys inner_bndrs phi_ty
+ , sig_body = mkGadtArgTys inner_bndrs phi_ty
}
)
where
@@ -251,13 +251,14 @@ getGADTConType
noLocA (HsQualTy{ hst_xqual = noAnn
, hst_ctxt = ctxt, hst_body = body})
- mkForallTy :: HsForAllTelescope DocNameI -> LHsType DocNameI -> LHsType DocNameI
- mkForallTy tele body =
- noLocA (HsForAllTy { hst_xforall = noAnn
+ mkGadtArgTy :: LHsGadtArg DocNameI -> LHsType DocNameI -> LHsType DocNameI
+ mkGadtArgTy (L l (HsGadtForAll _ tele)) body =
+ L l (HsForAllTy { hst_xforall = noAnn
, hst_tele = tele, hst_body = body })
+ mkGadtArgTy (L l HsGadtPar{}) body = L l (HsParTy noAnn body)
- mkForallTys :: [HsForAllTelescope DocNameI] -> LHsType DocNameI -> LHsType DocNameI
- mkForallTys = flip (foldr mkForallTy)
+ mkGadtArgTys :: [LHsGadtArg DocNameI] -> LHsType DocNameI -> LHsType DocNameI
+ mkGadtArgTys = flip (foldr mkGadtArgTy)
getGADTConType (ConDeclH98{}) = panic "getGADTConType"
=====================================
utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
=====================================
@@ -476,6 +476,11 @@ renameHsBndrVis :: HsBndrVis GhcRn -> RnM (HsBndrVis DocNameI)
renameHsBndrVis (HsBndrRequired _) = return (HsBndrRequired noExtField)
renameHsBndrVis (HsBndrInvisible at) = return (HsBndrInvisible at)
+renameHsGadtArg :: LHsGadtArg GhcRn -> RnM (LHsGadtArg DocNameI)
+renameHsGadtArg (L l HsGadtPar{}) = pure $ L l $ HsGadtPar noExtField
+renameHsGadtArg (L l (HsGadtForAll _ tele)) =
+ L l . HsGadtForAll noExtField <$> renameHsForAllTelescope tele
+
renameHsForAllTelescope :: HsForAllTelescope GhcRn -> RnM (HsForAllTelescope DocNameI)
renameHsForAllTelescope tele = case tele of
HsForAllVis _ bndrs -> do
@@ -761,7 +766,7 @@ renameCon
} = do
lnames' <- mapM renameNameL lnames
outer_bndrs' <- mapM renameOuterTyVarBndrs outer_bndrs
- inner_bndrs' <- mapM renameHsForAllTelescope inner_bndrs
+ inner_bndrs' <- mapM renameHsGadtArg inner_bndrs
lcontext' <- traverse renameLContext lcontext
details' <- renameGADTDetails details
res_ty' <- renameLType res_ty
=====================================
utils/haddock/haddock-api/src/Haddock/Types.hs
=====================================
@@ -841,6 +841,7 @@ type instance Anno (CType DocNameI) = SrcSpanAnnA
type instance Anno (Header DocNameI) = SrcSpanAnnA
type instance Anno (HsModifierOf (LocatedA (HsType DocNameI)) DocNameI) = SrcSpanAnnA
type instance Anno (HsContextDetails DocNameI a) = SrcSpanAnnA
+type instance Anno (HsGadtArg DocNameI) = SrcSpanAnnA
type XRecCond a =
( XParTy a ~ (EpToken "(", EpToken ")")
@@ -905,6 +906,10 @@ type instance XHsForAllVis DocNameI = NoExtField
type instance XHsForAllInvis DocNameI = NoExtField
type instance XXHsForAllTelescope DocNameI = DataConCantHappen
+type instance XGadtForAll DocNameI = NoExtField
+type instance XGadtPar DocNameI = NoExtField
+type instance XXGadtArg DocNameI = DataConCantHappen
+
type instance XTyVarBndr DocNameI = NoExtField
type instance XXTyVarBndr DocNameI = DataConCantHappen
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/53de859d9f307c2326e0068e18abb97…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/53de859d9f307c2326e0068e18abb97…
You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
1
0