Zubin pushed to branch wip/9.12.3-backports at Glasgow Haskell Compiler / GHC

Commits:

26 changed files:

Changes:

  • compiler/GHC/Parser/Lexer.x
    ... ... @@ -145,7 +145,7 @@ import GHC.Parser.String
    145 145
     $unispace    = \x05 -- Trick Alex into handling Unicode. See Note [Unicode in Alex].
    
    146 146
     $nl          = [\n\r\f]
    
    147 147
     $space       = [\ $unispace]
    
    148
    -$whitechar   = [$nl \v $space]
    
    148
    +$whitechar   = [$nl \t \v $space]
    
    149 149
     $white_no_nl = $whitechar # \n -- TODO #8424
    
    150 150
     $tab         = \t
    
    151 151
     
    
    ... ... @@ -248,7 +248,7 @@ haskell :-
    248 248
     -- Alex "Rules"
    
    249 249
     
    
    250 250
     -- everywhere: skip whitespace
    
    251
    -$white_no_nl+ ;
    
    251
    +($white_no_nl # \t)+ ;
    
    252 252
     $tab          { warnTab }
    
    253 253
     
    
    254 254
     -- Everywhere: deal with nested comments.  We explicitly rule out
    

  • compiler/GHC/Parser/Lexer/String.x
    ... ... @@ -25,7 +25,7 @@ import GHC.Utils.Panic (panic)
    25 25
     $unispace    = \x05 -- Trick Alex into handling Unicode. See Note [Unicode in Alex].
    
    26 26
     $nl          = [\n\r\f]
    
    27 27
     $space       = [\ $unispace]
    
    28
    -$whitechar   = [$nl \v $space]
    
    28
    +$whitechar   = [$nl \t \v $space]
    
    29 29
     $tab         = \t
    
    30 30
     
    
    31 31
     $ascdigit  = 0-9
    

  • compiler/GHC/StgToByteCode.hs
    ... ... @@ -1930,11 +1930,12 @@ pushAtom d p (StgVarArg var)
    1930 1930
             -- PUSH_G doesn't tag constructors. So we use PACK here
    
    1931 1931
             -- if we are dealing with nullary constructor.
    
    1932 1932
             case isDataConWorkId_maybe var of
    
    1933
    -          Just con -> do
    
    1934
    -            massert (isNullaryRepDataCon con)
    
    1935
    -            return (unitOL (PACK con 0), szb)
    
    1933
    +          Just con
    
    1934
    +            -- See Note [LFInfo of DataCon workers and wrappers] in GHC.Types.Id.Make.
    
    1935
    +            | isNullaryRepDataCon con ->
    
    1936
    +              return (unitOL (PACK con 0), szb)
    
    1936 1937
     
    
    1937
    -          Nothing
    
    1938
    +          _
    
    1938 1939
                 -- see Note [Generating code for top-level string literal bindings]
    
    1939 1940
                 | isUnliftedType (idType var) -> do
    
    1940 1941
                   massert (idType var `eqType` addrPrimTy)
    

  • compiler/GHC/Tc/Gen/Match.hs
    ... ... @@ -240,7 +240,9 @@ tcMatches ctxt tc_body pat_tys rhs_ty (MG { mg_alts = L l matches
    240 240
         -- when in inference mode, so we must do it ourselves,
    
    241 241
         -- here, using expTypeToType
    
    242 242
       = do { tcEmitBindingUsage bottomUE
    
    243
    -       ; pat_ty <- case pat_tys of -- See Note [Pattern types for EmptyCase]
    
    243
    +         -- See Note [Pattern types for EmptyCase]
    
    244
    +       ; let vis_pat_tys = filter isVisibleExpPatType pat_tys
    
    245
    +       ; pat_ty <- case vis_pat_tys of
    
    244 246
                [ExpFunPatTy t]      -> scaledExpTypeToType t
    
    245 247
                [ExpForAllPatTy tvb] -> failWithTc $ TcRnEmptyCase ctxt (EmptyCaseForall tvb)
    
    246 248
                []                   -> panic "tcMatches: no arguments in EmptyCase"
    
    ... ... @@ -275,8 +277,15 @@ tcMatches ctxt tc_body pat_tys rhs_ty (MG { mg_alts = L l matches
    275 277
     In tcMatches, we might encounter an empty list of matches if the user wrote
    
    276 278
     `case x of {}` or `\case {}`.
    
    277 279
     
    
    278
    -* First of all, both `case x of {}` and `\case {}` match on exactly one
    
    279
    -  argument, so we expect pat_tys to be a singleton list [pat_ty] and panic otherwise.
    
    280
    +* First of all, both `case x of {}` and `\case {}` match on exactly one visible
    
    281
    +  argument, which follows from
    
    282
    +
    
    283
    +    checkArgCounts :: MatchGroup GhcRn ... -> TcM VisArity
    
    284
    +    checkArgCounts (MG { mg_alts = L _ [] })
    
    285
    +      = return 1
    
    286
    +    ...
    
    287
    +
    
    288
    +  So we expect vis_pat_tys to be a singleton list [pat_ty] and panic otherwise.
    
    280 289
     
    
    281 290
       Multi-case `\cases {}` can't violate this assumption in `tcMatches` because it
    
    282 291
       must have been rejected earlier in `rnMatchGroup`.
    
    ... ... @@ -293,7 +302,7 @@ In tcMatches, we might encounter an empty list of matches if the user wrote
    293 302
       This is not valid and it used to trigger a panic in pmcMatches (#25004).
    
    294 303
       We reject it by inspecting the expected pattern type:
    
    295 304
     
    
    296
    -    ; pat_ty <- case pat_tys of
    
    305
    +    ; pat_ty <- case vis_pat_tys of
    
    297 306
             [ExpFunPatTy t]      -> ...    -- value argument, ok
    
    298 307
             [ExpForAllPatTy tvb] -> ...    -- type argument, error!
    
    299 308
     
    

  • rts/BuiltinClosures.c
    1
    +#include "Rts.h"
    
    2
    +#include "Prelude.h"
    
    3
    +#include "BuiltinClosures.h"
    
    4
    +
    
    5
    +/*
    
    6
    + * Note [CHARLIKE and INTLIKE closures]
    
    7
    + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    8
    + * These are static representations of Chars and small Ints, so that
    
    9
    + * we can remove dynamic Chars and Ints during garbage collection and
    
    10
    + * replace them with references to the static objects.
    
    11
    + */
    
    12
    +
    
    13
    +StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1];
    
    14
    +StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1];
    
    15
    +
    
    16
    +void initBuiltinClosures(void) {
    
    17
    +    // INTLIKE closures
    
    18
    +    for (int i = MIN_INTLIKE; i <= MAX_INTLIKE; i++) {
    
    19
    +        StgIntCharlikeClosure *c = &stg_INTLIKE_closure[i - MIN_INTLIKE];
    
    20
    +        SET_HDR((StgClosure* ) c, Izh_con_info, CCS_SYSTEM_OR_NULL);
    
    21
    +        c->data = i;
    
    22
    +    }
    
    23
    +
    
    24
    +    // CHARLIKE closures
    
    25
    +    for (int i = MIN_CHARLIKE; i <= MAX_CHARLIKE; i++) {
    
    26
    +        StgIntCharlikeClosure *c = &stg_CHARLIKE_closure[i - MIN_CHARLIKE];
    
    27
    +        SET_HDR((StgClosure* ) c, Czh_con_info, CCS_SYSTEM_OR_NULL);
    
    28
    +        c->data = i;
    
    29
    +    }
    
    30
    +}

  • rts/BuiltinClosures.h
    1
    +/*
    
    2
    + * (c) The GHC Team, 2025-2026
    
    3
    + *
    
    4
    + * RTS/ghc-internal interface
    
    5
    + *
    
    6
    + */
    
    7
    +
    
    8
    +#pragma once
    
    9
    +
    
    10
    +#include "BeginPrivate.h"
    
    11
    +
    
    12
    +void initBuiltinClosures(void);
    
    13
    +
    
    14
    +#include "EndPrivate.h"

  • rts/Interpreter.c
    ... ... @@ -1874,7 +1874,6 @@ run_BCO:
    1874 1874
                 // n_nptrs=1, n_ptrs=0.
    
    1875 1875
                 ASSERT(n_ptrs + n_nptrs == n_words || (n_nptrs == 1 && n_ptrs == 0));
    
    1876 1876
                 ASSERT(n_ptrs + n_nptrs > 0);
    
    1877
    -            //ASSERT(n_words > 0); // We shouldn't ever need to allocate nullary constructors
    
    1878 1877
                 for (W_ i = 0; i < n_words; i++) {
    
    1879 1878
                     con->payload[i] = (StgClosure*)ReadSpW(i);
    
    1880 1879
                 }
    

  • rts/RtsStartup.c
    ... ... @@ -14,6 +14,7 @@
    14 14
     #include "linker/MMap.h"
    
    15 15
     #include "RtsFlags.h"
    
    16 16
     #include "RtsUtils.h"
    
    17
    +#include "BuiltinClosures.h"
    
    17 18
     #include "Prelude.h"
    
    18 19
     #include "Printer.h"    /* DEBUG_LoadSymbols */
    
    19 20
     #include "Schedule.h"   /* initScheduler */
    
    ... ... @@ -378,6 +379,9 @@ hs_init_ghc(int *argc, char **argv[], RtsConfig rts_config)
    378 379
         traceInitEvent(traceOSProcessInfo);
    
    379 380
         flushTrace();
    
    380 381
     
    
    382
    +    /* initialize INTLIKE and CHARLIKE closures */
    
    383
    +    initBuiltinClosures();
    
    384
    +
    
    381 385
         /* initialize the storage manager */
    
    382 386
         initStorage();
    
    383 387
     
    

  • rts/StgMiscClosures.cmm
    ... ... @@ -13,8 +13,6 @@
    13 13
     #include "Cmm.h"
    
    14 14
     
    
    15 15
     import pthread_mutex_lock;
    
    16
    -import ghczmprim_GHCziTypes_Czh_info;
    
    17
    -import ghczmprim_GHCziTypes_Izh_info;
    
    18 16
     import AcquireSRWLockExclusive;
    
    19 17
     import ReleaseSRWLockExclusive;
    
    20 18
     
    
    ... ... @@ -968,571 +966,6 @@ INFO_TABLE( stg_COMPACT_NFDATA_DIRTY, 0, 9, COMPACT_NFDATA, "COMPACT_NFDATA", "C
    968 966
         ()
    
    969 967
     { foreign "C" barf("COMPACT_NFDATA_DIRTY object (%p) entered!", R1) never returns; }
    
    970 968
     
    
    971
    -/* ----------------------------------------------------------------------------
    
    972
    -   Note [CHARLIKE and INTLIKE closures]
    
    973
    -   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    974
    -   These are static representations of Chars and small Ints, so that
    
    975
    -   we can remove dynamic Chars and Ints during garbage collection and
    
    976
    -   replace them with references to the static objects.
    
    977 969
        ------------------------------------------------------------------------- */
    
    978 970
     
    
    979
    -#if defined(COMPILING_WINDOWS_DLL)
    
    980
    -/*
    
    981
    - * When sticking the RTS in a Windows DLL, we delay populating the
    
    982
    - * Charlike and Intlike tables until load-time, which is only
    
    983
    - * when we've got the real addresses to the C# and I# closures.
    
    984
    - *
    
    985
    - * -- this is currently broken BL 2009/11/14.
    
    986
    - *    we don't rewrite to static closures at all with Windows DLLs.
    
    987
    - */
    
    988
    -// #warning Is this correct? _imp is a pointer!
    
    989
    -#define Char_hash_con_info _imp__ghczmprim_GHCziTypes_Czh_con_info
    
    990
    -#define Int_hash_con_info _imp__ghczmprim_GHCziTypes_Izh_con_info
    
    991
    -#else
    
    992
    -#define Char_hash_con_info ghczmprim_GHCziTypes_Czh_con_info
    
    993
    -#define Int_hash_con_info ghczmprim_GHCziTypes_Izh_con_info
    
    994
    -#endif
    
    995
    -
    
    996
    -
    
    997
    -#define CHARLIKE_HDR(n)  CLOSURE(Char_hash_con_info, n)
    
    998
    -#define INTLIKE_HDR(n)   CLOSURE(Int_hash_con_info, n)
    
    999
    -
    
    1000
    -#if !(defined(COMPILING_WINDOWS_DLL))
    
    1001
    -section "data" {
    
    1002
    - stg_CHARLIKE_closure:
    
    1003
    -    CHARLIKE_HDR(0)
    
    1004
    -    CHARLIKE_HDR(1)
    
    1005
    -    CHARLIKE_HDR(2)
    
    1006
    -    CHARLIKE_HDR(3)
    
    1007
    -    CHARLIKE_HDR(4)
    
    1008
    -    CHARLIKE_HDR(5)
    
    1009
    -    CHARLIKE_HDR(6)
    
    1010
    -    CHARLIKE_HDR(7)
    
    1011
    -    CHARLIKE_HDR(8)
    
    1012
    -    CHARLIKE_HDR(9)
    
    1013
    -    CHARLIKE_HDR(10)
    
    1014
    -    CHARLIKE_HDR(11)
    
    1015
    -    CHARLIKE_HDR(12)
    
    1016
    -    CHARLIKE_HDR(13)
    
    1017
    -    CHARLIKE_HDR(14)
    
    1018
    -    CHARLIKE_HDR(15)
    
    1019
    -    CHARLIKE_HDR(16)
    
    1020
    -    CHARLIKE_HDR(17)
    
    1021
    -    CHARLIKE_HDR(18)
    
    1022
    -    CHARLIKE_HDR(19)
    
    1023
    -    CHARLIKE_HDR(20)
    
    1024
    -    CHARLIKE_HDR(21)
    
    1025
    -    CHARLIKE_HDR(22)
    
    1026
    -    CHARLIKE_HDR(23)
    
    1027
    -    CHARLIKE_HDR(24)
    
    1028
    -    CHARLIKE_HDR(25)
    
    1029
    -    CHARLIKE_HDR(26)
    
    1030
    -    CHARLIKE_HDR(27)
    
    1031
    -    CHARLIKE_HDR(28)
    
    1032
    -    CHARLIKE_HDR(29)
    
    1033
    -    CHARLIKE_HDR(30)
    
    1034
    -    CHARLIKE_HDR(31)
    
    1035
    -    CHARLIKE_HDR(32)
    
    1036
    -    CHARLIKE_HDR(33)
    
    1037
    -    CHARLIKE_HDR(34)
    
    1038
    -    CHARLIKE_HDR(35)
    
    1039
    -    CHARLIKE_HDR(36)
    
    1040
    -    CHARLIKE_HDR(37)
    
    1041
    -    CHARLIKE_HDR(38)
    
    1042
    -    CHARLIKE_HDR(39)
    
    1043
    -    CHARLIKE_HDR(40)
    
    1044
    -    CHARLIKE_HDR(41)
    
    1045
    -    CHARLIKE_HDR(42)
    
    1046
    -    CHARLIKE_HDR(43)
    
    1047
    -    CHARLIKE_HDR(44)
    
    1048
    -    CHARLIKE_HDR(45)
    
    1049
    -    CHARLIKE_HDR(46)
    
    1050
    -    CHARLIKE_HDR(47)
    
    1051
    -    CHARLIKE_HDR(48)
    
    1052
    -    CHARLIKE_HDR(49)
    
    1053
    -    CHARLIKE_HDR(50)
    
    1054
    -    CHARLIKE_HDR(51)
    
    1055
    -    CHARLIKE_HDR(52)
    
    1056
    -    CHARLIKE_HDR(53)
    
    1057
    -    CHARLIKE_HDR(54)
    
    1058
    -    CHARLIKE_HDR(55)
    
    1059
    -    CHARLIKE_HDR(56)
    
    1060
    -    CHARLIKE_HDR(57)
    
    1061
    -    CHARLIKE_HDR(58)
    
    1062
    -    CHARLIKE_HDR(59)
    
    1063
    -    CHARLIKE_HDR(60)
    
    1064
    -    CHARLIKE_HDR(61)
    
    1065
    -    CHARLIKE_HDR(62)
    
    1066
    -    CHARLIKE_HDR(63)
    
    1067
    -    CHARLIKE_HDR(64)
    
    1068
    -    CHARLIKE_HDR(65)
    
    1069
    -    CHARLIKE_HDR(66)
    
    1070
    -    CHARLIKE_HDR(67)
    
    1071
    -    CHARLIKE_HDR(68)
    
    1072
    -    CHARLIKE_HDR(69)
    
    1073
    -    CHARLIKE_HDR(70)
    
    1074
    -    CHARLIKE_HDR(71)
    
    1075
    -    CHARLIKE_HDR(72)
    
    1076
    -    CHARLIKE_HDR(73)
    
    1077
    -    CHARLIKE_HDR(74)
    
    1078
    -    CHARLIKE_HDR(75)
    
    1079
    -    CHARLIKE_HDR(76)
    
    1080
    -    CHARLIKE_HDR(77)
    
    1081
    -    CHARLIKE_HDR(78)
    
    1082
    -    CHARLIKE_HDR(79)
    
    1083
    -    CHARLIKE_HDR(80)
    
    1084
    -    CHARLIKE_HDR(81)
    
    1085
    -    CHARLIKE_HDR(82)
    
    1086
    -    CHARLIKE_HDR(83)
    
    1087
    -    CHARLIKE_HDR(84)
    
    1088
    -    CHARLIKE_HDR(85)
    
    1089
    -    CHARLIKE_HDR(86)
    
    1090
    -    CHARLIKE_HDR(87)
    
    1091
    -    CHARLIKE_HDR(88)
    
    1092
    -    CHARLIKE_HDR(89)
    
    1093
    -    CHARLIKE_HDR(90)
    
    1094
    -    CHARLIKE_HDR(91)
    
    1095
    -    CHARLIKE_HDR(92)
    
    1096
    -    CHARLIKE_HDR(93)
    
    1097
    -    CHARLIKE_HDR(94)
    
    1098
    -    CHARLIKE_HDR(95)
    
    1099
    -    CHARLIKE_HDR(96)
    
    1100
    -    CHARLIKE_HDR(97)
    
    1101
    -    CHARLIKE_HDR(98)
    
    1102
    -    CHARLIKE_HDR(99)
    
    1103
    -    CHARLIKE_HDR(100)
    
    1104
    -    CHARLIKE_HDR(101)
    
    1105
    -    CHARLIKE_HDR(102)
    
    1106
    -    CHARLIKE_HDR(103)
    
    1107
    -    CHARLIKE_HDR(104)
    
    1108
    -    CHARLIKE_HDR(105)
    
    1109
    -    CHARLIKE_HDR(106)
    
    1110
    -    CHARLIKE_HDR(107)
    
    1111
    -    CHARLIKE_HDR(108)
    
    1112
    -    CHARLIKE_HDR(109)
    
    1113
    -    CHARLIKE_HDR(110)
    
    1114
    -    CHARLIKE_HDR(111)
    
    1115
    -    CHARLIKE_HDR(112)
    
    1116
    -    CHARLIKE_HDR(113)
    
    1117
    -    CHARLIKE_HDR(114)
    
    1118
    -    CHARLIKE_HDR(115)
    
    1119
    -    CHARLIKE_HDR(116)
    
    1120
    -    CHARLIKE_HDR(117)
    
    1121
    -    CHARLIKE_HDR(118)
    
    1122
    -    CHARLIKE_HDR(119)
    
    1123
    -    CHARLIKE_HDR(120)
    
    1124
    -    CHARLIKE_HDR(121)
    
    1125
    -    CHARLIKE_HDR(122)
    
    1126
    -    CHARLIKE_HDR(123)
    
    1127
    -    CHARLIKE_HDR(124)
    
    1128
    -    CHARLIKE_HDR(125)
    
    1129
    -    CHARLIKE_HDR(126)
    
    1130
    -    CHARLIKE_HDR(127)
    
    1131
    -    CHARLIKE_HDR(128)
    
    1132
    -    CHARLIKE_HDR(129)
    
    1133
    -    CHARLIKE_HDR(130)
    
    1134
    -    CHARLIKE_HDR(131)
    
    1135
    -    CHARLIKE_HDR(132)
    
    1136
    -    CHARLIKE_HDR(133)
    
    1137
    -    CHARLIKE_HDR(134)
    
    1138
    -    CHARLIKE_HDR(135)
    
    1139
    -    CHARLIKE_HDR(136)
    
    1140
    -    CHARLIKE_HDR(137)
    
    1141
    -    CHARLIKE_HDR(138)
    
    1142
    -    CHARLIKE_HDR(139)
    
    1143
    -    CHARLIKE_HDR(140)
    
    1144
    -    CHARLIKE_HDR(141)
    
    1145
    -    CHARLIKE_HDR(142)
    
    1146
    -    CHARLIKE_HDR(143)
    
    1147
    -    CHARLIKE_HDR(144)
    
    1148
    -    CHARLIKE_HDR(145)
    
    1149
    -    CHARLIKE_HDR(146)
    
    1150
    -    CHARLIKE_HDR(147)
    
    1151
    -    CHARLIKE_HDR(148)
    
    1152
    -    CHARLIKE_HDR(149)
    
    1153
    -    CHARLIKE_HDR(150)
    
    1154
    -    CHARLIKE_HDR(151)
    
    1155
    -    CHARLIKE_HDR(152)
    
    1156
    -    CHARLIKE_HDR(153)
    
    1157
    -    CHARLIKE_HDR(154)
    
    1158
    -    CHARLIKE_HDR(155)
    
    1159
    -    CHARLIKE_HDR(156)
    
    1160
    -    CHARLIKE_HDR(157)
    
    1161
    -    CHARLIKE_HDR(158)
    
    1162
    -    CHARLIKE_HDR(159)
    
    1163
    -    CHARLIKE_HDR(160)
    
    1164
    -    CHARLIKE_HDR(161)
    
    1165
    -    CHARLIKE_HDR(162)
    
    1166
    -    CHARLIKE_HDR(163)
    
    1167
    -    CHARLIKE_HDR(164)
    
    1168
    -    CHARLIKE_HDR(165)
    
    1169
    -    CHARLIKE_HDR(166)
    
    1170
    -    CHARLIKE_HDR(167)
    
    1171
    -    CHARLIKE_HDR(168)
    
    1172
    -    CHARLIKE_HDR(169)
    
    1173
    -    CHARLIKE_HDR(170)
    
    1174
    -    CHARLIKE_HDR(171)
    
    1175
    -    CHARLIKE_HDR(172)
    
    1176
    -    CHARLIKE_HDR(173)
    
    1177
    -    CHARLIKE_HDR(174)
    
    1178
    -    CHARLIKE_HDR(175)
    
    1179
    -    CHARLIKE_HDR(176)
    
    1180
    -    CHARLIKE_HDR(177)
    
    1181
    -    CHARLIKE_HDR(178)
    
    1182
    -    CHARLIKE_HDR(179)
    
    1183
    -    CHARLIKE_HDR(180)
    
    1184
    -    CHARLIKE_HDR(181)
    
    1185
    -    CHARLIKE_HDR(182)
    
    1186
    -    CHARLIKE_HDR(183)
    
    1187
    -    CHARLIKE_HDR(184)
    
    1188
    -    CHARLIKE_HDR(185)
    
    1189
    -    CHARLIKE_HDR(186)
    
    1190
    -    CHARLIKE_HDR(187)
    
    1191
    -    CHARLIKE_HDR(188)
    
    1192
    -    CHARLIKE_HDR(189)
    
    1193
    -    CHARLIKE_HDR(190)
    
    1194
    -    CHARLIKE_HDR(191)
    
    1195
    -    CHARLIKE_HDR(192)
    
    1196
    -    CHARLIKE_HDR(193)
    
    1197
    -    CHARLIKE_HDR(194)
    
    1198
    -    CHARLIKE_HDR(195)
    
    1199
    -    CHARLIKE_HDR(196)
    
    1200
    -    CHARLIKE_HDR(197)
    
    1201
    -    CHARLIKE_HDR(198)
    
    1202
    -    CHARLIKE_HDR(199)
    
    1203
    -    CHARLIKE_HDR(200)
    
    1204
    -    CHARLIKE_HDR(201)
    
    1205
    -    CHARLIKE_HDR(202)
    
    1206
    -    CHARLIKE_HDR(203)
    
    1207
    -    CHARLIKE_HDR(204)
    
    1208
    -    CHARLIKE_HDR(205)
    
    1209
    -    CHARLIKE_HDR(206)
    
    1210
    -    CHARLIKE_HDR(207)
    
    1211
    -    CHARLIKE_HDR(208)
    
    1212
    -    CHARLIKE_HDR(209)
    
    1213
    -    CHARLIKE_HDR(210)
    
    1214
    -    CHARLIKE_HDR(211)
    
    1215
    -    CHARLIKE_HDR(212)
    
    1216
    -    CHARLIKE_HDR(213)
    
    1217
    -    CHARLIKE_HDR(214)
    
    1218
    -    CHARLIKE_HDR(215)
    
    1219
    -    CHARLIKE_HDR(216)
    
    1220
    -    CHARLIKE_HDR(217)
    
    1221
    -    CHARLIKE_HDR(218)
    
    1222
    -    CHARLIKE_HDR(219)
    
    1223
    -    CHARLIKE_HDR(220)
    
    1224
    -    CHARLIKE_HDR(221)
    
    1225
    -    CHARLIKE_HDR(222)
    
    1226
    -    CHARLIKE_HDR(223)
    
    1227
    -    CHARLIKE_HDR(224)
    
    1228
    -    CHARLIKE_HDR(225)
    
    1229
    -    CHARLIKE_HDR(226)
    
    1230
    -    CHARLIKE_HDR(227)
    
    1231
    -    CHARLIKE_HDR(228)
    
    1232
    -    CHARLIKE_HDR(229)
    
    1233
    -    CHARLIKE_HDR(230)
    
    1234
    -    CHARLIKE_HDR(231)
    
    1235
    -    CHARLIKE_HDR(232)
    
    1236
    -    CHARLIKE_HDR(233)
    
    1237
    -    CHARLIKE_HDR(234)
    
    1238
    -    CHARLIKE_HDR(235)
    
    1239
    -    CHARLIKE_HDR(236)
    
    1240
    -    CHARLIKE_HDR(237)
    
    1241
    -    CHARLIKE_HDR(238)
    
    1242
    -    CHARLIKE_HDR(239)
    
    1243
    -    CHARLIKE_HDR(240)
    
    1244
    -    CHARLIKE_HDR(241)
    
    1245
    -    CHARLIKE_HDR(242)
    
    1246
    -    CHARLIKE_HDR(243)
    
    1247
    -    CHARLIKE_HDR(244)
    
    1248
    -    CHARLIKE_HDR(245)
    
    1249
    -    CHARLIKE_HDR(246)
    
    1250
    -    CHARLIKE_HDR(247)
    
    1251
    -    CHARLIKE_HDR(248)
    
    1252
    -    CHARLIKE_HDR(249)
    
    1253
    -    CHARLIKE_HDR(250)
    
    1254
    -    CHARLIKE_HDR(251)
    
    1255
    -    CHARLIKE_HDR(252)
    
    1256
    -    CHARLIKE_HDR(253)
    
    1257
    -    CHARLIKE_HDR(254)
    
    1258
    -    CHARLIKE_HDR(255)
    
    1259
    -}
    
    1260
    -
    
    1261
    -section "data" {
    
    1262
    - stg_INTLIKE_closure:
    
    1263
    -    INTLIKE_HDR(-16) /* MIN_INTLIKE == -16 */
    
    1264
    -    INTLIKE_HDR(-15)
    
    1265
    -    INTLIKE_HDR(-14)
    
    1266
    -    INTLIKE_HDR(-13)
    
    1267
    -    INTLIKE_HDR(-12)
    
    1268
    -    INTLIKE_HDR(-11)
    
    1269
    -    INTLIKE_HDR(-10)
    
    1270
    -    INTLIKE_HDR(-9)
    
    1271
    -    INTLIKE_HDR(-8)
    
    1272
    -    INTLIKE_HDR(-7)
    
    1273
    -    INTLIKE_HDR(-6)
    
    1274
    -    INTLIKE_HDR(-5)
    
    1275
    -    INTLIKE_HDR(-4)
    
    1276
    -    INTLIKE_HDR(-3)
    
    1277
    -    INTLIKE_HDR(-2)
    
    1278
    -    INTLIKE_HDR(-1)
    
    1279
    -    INTLIKE_HDR(0)
    
    1280
    -    INTLIKE_HDR(1)
    
    1281
    -    INTLIKE_HDR(2)
    
    1282
    -    INTLIKE_HDR(3)
    
    1283
    -    INTLIKE_HDR(4)
    
    1284
    -    INTLIKE_HDR(5)
    
    1285
    -    INTLIKE_HDR(6)
    
    1286
    -    INTLIKE_HDR(7)
    
    1287
    -    INTLIKE_HDR(8)
    
    1288
    -    INTLIKE_HDR(9)
    
    1289
    -    INTLIKE_HDR(10)
    
    1290
    -    INTLIKE_HDR(11)
    
    1291
    -    INTLIKE_HDR(12)
    
    1292
    -    INTLIKE_HDR(13)
    
    1293
    -    INTLIKE_HDR(14)
    
    1294
    -    INTLIKE_HDR(15)
    
    1295
    -    INTLIKE_HDR(16)
    
    1296
    -    INTLIKE_HDR(17)
    
    1297
    -    INTLIKE_HDR(18)
    
    1298
    -    INTLIKE_HDR(19)
    
    1299
    -    INTLIKE_HDR(20)
    
    1300
    -    INTLIKE_HDR(21)
    
    1301
    -    INTLIKE_HDR(22)
    
    1302
    -    INTLIKE_HDR(23)
    
    1303
    -    INTLIKE_HDR(24)
    
    1304
    -    INTLIKE_HDR(25)
    
    1305
    -    INTLIKE_HDR(26)
    
    1306
    -    INTLIKE_HDR(27)
    
    1307
    -    INTLIKE_HDR(28)
    
    1308
    -    INTLIKE_HDR(29)
    
    1309
    -    INTLIKE_HDR(30)
    
    1310
    -    INTLIKE_HDR(31)
    
    1311
    -    INTLIKE_HDR(32)
    
    1312
    -    INTLIKE_HDR(33)
    
    1313
    -    INTLIKE_HDR(34)
    
    1314
    -    INTLIKE_HDR(35)
    
    1315
    -    INTLIKE_HDR(36)
    
    1316
    -    INTLIKE_HDR(37)
    
    1317
    -    INTLIKE_HDR(38)
    
    1318
    -    INTLIKE_HDR(39)
    
    1319
    -    INTLIKE_HDR(40)
    
    1320
    -    INTLIKE_HDR(41)
    
    1321
    -    INTLIKE_HDR(42)
    
    1322
    -    INTLIKE_HDR(43)
    
    1323
    -    INTLIKE_HDR(44)
    
    1324
    -    INTLIKE_HDR(45)
    
    1325
    -    INTLIKE_HDR(46)
    
    1326
    -    INTLIKE_HDR(47)
    
    1327
    -    INTLIKE_HDR(48)
    
    1328
    -    INTLIKE_HDR(49)
    
    1329
    -    INTLIKE_HDR(50)
    
    1330
    -    INTLIKE_HDR(51)
    
    1331
    -    INTLIKE_HDR(52)
    
    1332
    -    INTLIKE_HDR(53)
    
    1333
    -    INTLIKE_HDR(54)
    
    1334
    -    INTLIKE_HDR(55)
    
    1335
    -    INTLIKE_HDR(56)
    
    1336
    -    INTLIKE_HDR(57)
    
    1337
    -    INTLIKE_HDR(58)
    
    1338
    -    INTLIKE_HDR(59)
    
    1339
    -    INTLIKE_HDR(60)
    
    1340
    -    INTLIKE_HDR(61)
    
    1341
    -    INTLIKE_HDR(62)
    
    1342
    -    INTLIKE_HDR(63)
    
    1343
    -    INTLIKE_HDR(64)
    
    1344
    -    INTLIKE_HDR(65)
    
    1345
    -    INTLIKE_HDR(66)
    
    1346
    -    INTLIKE_HDR(67)
    
    1347
    -    INTLIKE_HDR(68)
    
    1348
    -    INTLIKE_HDR(69)
    
    1349
    -    INTLIKE_HDR(70)
    
    1350
    -    INTLIKE_HDR(71)
    
    1351
    -    INTLIKE_HDR(72)
    
    1352
    -    INTLIKE_HDR(73)
    
    1353
    -    INTLIKE_HDR(74)
    
    1354
    -    INTLIKE_HDR(75)
    
    1355
    -    INTLIKE_HDR(76)
    
    1356
    -    INTLIKE_HDR(77)
    
    1357
    -    INTLIKE_HDR(78)
    
    1358
    -    INTLIKE_HDR(79)
    
    1359
    -    INTLIKE_HDR(80)
    
    1360
    -    INTLIKE_HDR(81)
    
    1361
    -    INTLIKE_HDR(82)
    
    1362
    -    INTLIKE_HDR(83)
    
    1363
    -    INTLIKE_HDR(84)
    
    1364
    -    INTLIKE_HDR(85)
    
    1365
    -    INTLIKE_HDR(86)
    
    1366
    -    INTLIKE_HDR(87)
    
    1367
    -    INTLIKE_HDR(88)
    
    1368
    -    INTLIKE_HDR(89)
    
    1369
    -    INTLIKE_HDR(90)
    
    1370
    -    INTLIKE_HDR(91)
    
    1371
    -    INTLIKE_HDR(92)
    
    1372
    -    INTLIKE_HDR(93)
    
    1373
    -    INTLIKE_HDR(94)
    
    1374
    -    INTLIKE_HDR(95)
    
    1375
    -    INTLIKE_HDR(96)
    
    1376
    -    INTLIKE_HDR(97)
    
    1377
    -    INTLIKE_HDR(98)
    
    1378
    -    INTLIKE_HDR(99)
    
    1379
    -    INTLIKE_HDR(100)
    
    1380
    -    INTLIKE_HDR(101)
    
    1381
    -    INTLIKE_HDR(102)
    
    1382
    -    INTLIKE_HDR(103)
    
    1383
    -    INTLIKE_HDR(104)
    
    1384
    -    INTLIKE_HDR(105)
    
    1385
    -    INTLIKE_HDR(106)
    
    1386
    -    INTLIKE_HDR(107)
    
    1387
    -    INTLIKE_HDR(108)
    
    1388
    -    INTLIKE_HDR(109)
    
    1389
    -    INTLIKE_HDR(110)
    
    1390
    -    INTLIKE_HDR(111)
    
    1391
    -    INTLIKE_HDR(112)
    
    1392
    -    INTLIKE_HDR(113)
    
    1393
    -    INTLIKE_HDR(114)
    
    1394
    -    INTLIKE_HDR(115)
    
    1395
    -    INTLIKE_HDR(116)
    
    1396
    -    INTLIKE_HDR(117)
    
    1397
    -    INTLIKE_HDR(118)
    
    1398
    -    INTLIKE_HDR(119)
    
    1399
    -    INTLIKE_HDR(120)
    
    1400
    -    INTLIKE_HDR(121)
    
    1401
    -    INTLIKE_HDR(122)
    
    1402
    -    INTLIKE_HDR(123)
    
    1403
    -    INTLIKE_HDR(124)
    
    1404
    -    INTLIKE_HDR(125)
    
    1405
    -    INTLIKE_HDR(126)
    
    1406
    -    INTLIKE_HDR(127)
    
    1407
    -    INTLIKE_HDR(128)
    
    1408
    -    INTLIKE_HDR(129)
    
    1409
    -    INTLIKE_HDR(130)
    
    1410
    -    INTLIKE_HDR(131)
    
    1411
    -    INTLIKE_HDR(132)
    
    1412
    -    INTLIKE_HDR(133)
    
    1413
    -    INTLIKE_HDR(134)
    
    1414
    -    INTLIKE_HDR(135)
    
    1415
    -    INTLIKE_HDR(136)
    
    1416
    -    INTLIKE_HDR(137)
    
    1417
    -    INTLIKE_HDR(138)
    
    1418
    -    INTLIKE_HDR(139)
    
    1419
    -    INTLIKE_HDR(140)
    
    1420
    -    INTLIKE_HDR(141)
    
    1421
    -    INTLIKE_HDR(142)
    
    1422
    -    INTLIKE_HDR(143)
    
    1423
    -    INTLIKE_HDR(144)
    
    1424
    -    INTLIKE_HDR(145)
    
    1425
    -    INTLIKE_HDR(146)
    
    1426
    -    INTLIKE_HDR(147)
    
    1427
    -    INTLIKE_HDR(148)
    
    1428
    -    INTLIKE_HDR(149)
    
    1429
    -    INTLIKE_HDR(150)
    
    1430
    -    INTLIKE_HDR(151)
    
    1431
    -    INTLIKE_HDR(152)
    
    1432
    -    INTLIKE_HDR(153)
    
    1433
    -    INTLIKE_HDR(154)
    
    1434
    -    INTLIKE_HDR(155)
    
    1435
    -    INTLIKE_HDR(156)
    
    1436
    -    INTLIKE_HDR(157)
    
    1437
    -    INTLIKE_HDR(158)
    
    1438
    -    INTLIKE_HDR(159)
    
    1439
    -    INTLIKE_HDR(160)
    
    1440
    -    INTLIKE_HDR(161)
    
    1441
    -    INTLIKE_HDR(162)
    
    1442
    -    INTLIKE_HDR(163)
    
    1443
    -    INTLIKE_HDR(164)
    
    1444
    -    INTLIKE_HDR(165)
    
    1445
    -    INTLIKE_HDR(166)
    
    1446
    -    INTLIKE_HDR(167)
    
    1447
    -    INTLIKE_HDR(168)
    
    1448
    -    INTLIKE_HDR(169)
    
    1449
    -    INTLIKE_HDR(170)
    
    1450
    -    INTLIKE_HDR(171)
    
    1451
    -    INTLIKE_HDR(172)
    
    1452
    -    INTLIKE_HDR(173)
    
    1453
    -    INTLIKE_HDR(174)
    
    1454
    -    INTLIKE_HDR(175)
    
    1455
    -    INTLIKE_HDR(176)
    
    1456
    -    INTLIKE_HDR(177)
    
    1457
    -    INTLIKE_HDR(178)
    
    1458
    -    INTLIKE_HDR(179)
    
    1459
    -    INTLIKE_HDR(180)
    
    1460
    -    INTLIKE_HDR(181)
    
    1461
    -    INTLIKE_HDR(182)
    
    1462
    -    INTLIKE_HDR(183)
    
    1463
    -    INTLIKE_HDR(184)
    
    1464
    -    INTLIKE_HDR(185)
    
    1465
    -    INTLIKE_HDR(186)
    
    1466
    -    INTLIKE_HDR(187)
    
    1467
    -    INTLIKE_HDR(188)
    
    1468
    -    INTLIKE_HDR(189)
    
    1469
    -    INTLIKE_HDR(190)
    
    1470
    -    INTLIKE_HDR(191)
    
    1471
    -    INTLIKE_HDR(192)
    
    1472
    -    INTLIKE_HDR(193)
    
    1473
    -    INTLIKE_HDR(194)
    
    1474
    -    INTLIKE_HDR(195)
    
    1475
    -    INTLIKE_HDR(196)
    
    1476
    -    INTLIKE_HDR(197)
    
    1477
    -    INTLIKE_HDR(198)
    
    1478
    -    INTLIKE_HDR(199)
    
    1479
    -    INTLIKE_HDR(200)
    
    1480
    -    INTLIKE_HDR(201)
    
    1481
    -    INTLIKE_HDR(202)
    
    1482
    -    INTLIKE_HDR(203)
    
    1483
    -    INTLIKE_HDR(204)
    
    1484
    -    INTLIKE_HDR(205)
    
    1485
    -    INTLIKE_HDR(206)
    
    1486
    -    INTLIKE_HDR(207)
    
    1487
    -    INTLIKE_HDR(208)
    
    1488
    -    INTLIKE_HDR(209)
    
    1489
    -    INTLIKE_HDR(210)
    
    1490
    -    INTLIKE_HDR(211)
    
    1491
    -    INTLIKE_HDR(212)
    
    1492
    -    INTLIKE_HDR(213)
    
    1493
    -    INTLIKE_HDR(214)
    
    1494
    -    INTLIKE_HDR(215)
    
    1495
    -    INTLIKE_HDR(216)
    
    1496
    -    INTLIKE_HDR(217)
    
    1497
    -    INTLIKE_HDR(218)
    
    1498
    -    INTLIKE_HDR(219)
    
    1499
    -    INTLIKE_HDR(220)
    
    1500
    -    INTLIKE_HDR(221)
    
    1501
    -    INTLIKE_HDR(222)
    
    1502
    -    INTLIKE_HDR(223)
    
    1503
    -    INTLIKE_HDR(224)
    
    1504
    -    INTLIKE_HDR(225)
    
    1505
    -    INTLIKE_HDR(226)
    
    1506
    -    INTLIKE_HDR(227)
    
    1507
    -    INTLIKE_HDR(228)
    
    1508
    -    INTLIKE_HDR(229)
    
    1509
    -    INTLIKE_HDR(230)
    
    1510
    -    INTLIKE_HDR(231)
    
    1511
    -    INTLIKE_HDR(232)
    
    1512
    -    INTLIKE_HDR(233)
    
    1513
    -    INTLIKE_HDR(234)
    
    1514
    -    INTLIKE_HDR(235)
    
    1515
    -    INTLIKE_HDR(236)
    
    1516
    -    INTLIKE_HDR(237)
    
    1517
    -    INTLIKE_HDR(238)
    
    1518
    -    INTLIKE_HDR(239)
    
    1519
    -    INTLIKE_HDR(240)
    
    1520
    -    INTLIKE_HDR(241)
    
    1521
    -    INTLIKE_HDR(242)
    
    1522
    -    INTLIKE_HDR(243)
    
    1523
    -    INTLIKE_HDR(244)
    
    1524
    -    INTLIKE_HDR(245)
    
    1525
    -    INTLIKE_HDR(246)
    
    1526
    -    INTLIKE_HDR(247)
    
    1527
    -    INTLIKE_HDR(248)
    
    1528
    -    INTLIKE_HDR(249)
    
    1529
    -    INTLIKE_HDR(250)
    
    1530
    -    INTLIKE_HDR(251)
    
    1531
    -    INTLIKE_HDR(252)
    
    1532
    -    INTLIKE_HDR(253)
    
    1533
    -    INTLIKE_HDR(254)
    
    1534
    -    INTLIKE_HDR(255)    /* MAX_INTLIKE == 255
    
    1535
    -                         See #16961 for why 255 */
    
    1536
    -}
    
    1537
    -
    
    1538
    -#endif
    971
    +CLOSURE(stg_TIMEOUT_QUEUE_EMPTY_closure,stg_TIMEOUT_QUEUE_EMPTY);

  • rts/include/rts/Constants.h
    ... ... @@ -57,11 +57,12 @@
    57 57
     #define MAX_SPEC_CONSTR_SIZE   2
    
    58 58
     
    
    59 59
     /* Range of built-in table of static small int-like and char-like closures.
    
    60
    + * Range is inclusive of both minimum and maximum.
    
    60 61
      *
    
    61 62
      *   NB. This corresponds with the number of actual INTLIKE/CHARLIKE
    
    62 63
      *   closures defined in rts/StgMiscClosures.cmm.
    
    63 64
      */
    
    64
    -#define MAX_INTLIKE             255
    
    65
    +#define MAX_INTLIKE             255 /* See #16961 for why 255 */
    
    65 66
     #define MIN_INTLIKE             (-16)
    
    66 67
     
    
    67 68
     #define MAX_CHARLIKE            255
    

  • rts/include/stg/MiscClosures.h
    ... ... @@ -268,8 +268,8 @@ RTS_ENTRY(stg_NO_FINALIZER);
    268 268
     extern DLL_IMPORT_RTS StgWordArray stg_CHARLIKE_closure;
    
    269 269
     extern DLL_IMPORT_RTS StgWordArray stg_INTLIKE_closure;
    
    270 270
     #else
    
    271
    -extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_CHARLIKE_closure[];
    
    272
    -extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_INTLIKE_closure[];
    
    271
    +extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1];
    
    272
    +extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1];
    
    273 273
     #endif
    
    274 274
     
    
    275 275
     /* StgStartup */
    

  • rts/rts.cabal
    ... ... @@ -381,6 +381,7 @@ library
    381 381
                      adjustor/AdjustorPool.c
    
    382 382
                      ExecPage.c
    
    383 383
                      Arena.c
    
    384
    +                 BuiltinClosures.c
    
    384 385
                      Capability.c
    
    385 386
                      CheckUnload.c
    
    386 387
                      CheckVectorSupport.c
    

  • testsuite/tests/bytecode/T26216.hs
    1
    +{-# LANGUAGE GHC2024, BlockArguments, MagicHash #-}
    
    2
    +
    
    3
    +module T26216 (main) where
    
    4
    +
    
    5
    +import Data.Kind (Type, Constraint)
    
    6
    +import GHC.TypeNats
    
    7
    +import GHC.Exts (proxy#)
    
    8
    +
    
    9
    +import T26216_aux
    
    10
    +
    
    11
    +getN :: forall (n :: Nat). SNat n -> Natural
    
    12
    +getN s = withKnownNat s (natVal s)
    
    13
    +
    
    14
    +type C :: forall {k}. (k -> Constraint) -> k -> Type
    
    15
    +data C c a where { C :: c a => C c a }
    
    16
    +
    
    17
    +know :: forall (n :: Nat). SNat n -> C KnownNat n
    
    18
    +know s = withKnownNat s C
    
    19
    +
    
    20
    +getC :: forall (n :: Nat). C KnownNat n -> Natural
    
    21
    +getC C = natVal' (proxy# @n)
    
    22
    +
    
    23
    +main :: IO ()
    
    24
    +main = do
    
    25
    +    let !s = mkSome $ natSing @42
    
    26
    +        !c = withSome s $ mkSome . know
    
    27
    +    print $ withSome s getN
    
    28
    +    print $ withSome c getC

  • testsuite/tests/bytecode/T26216.script
    1
    +:l T26216
    
    2
    +main

  • testsuite/tests/bytecode/T26216.stdout
    1
    +42
    
    2
    +42

  • testsuite/tests/bytecode/T26216_aux.hs
    1
    +{-# LANGUAGE GHC2024         #-}
    
    2
    +{-# LANGUAGE PatternSynonyms #-}
    
    3
    +{-# LANGUAGE PolyKinds       #-}
    
    4
    +
    
    5
    +module T26216_aux (Some, data Some, mkSome, withSome) where
    
    6
    +import Data.Kind           (Type)
    
    7
    +import GHC.Exts            (Any)
    
    8
    +import Unsafe.Coerce       (unsafeCoerce)
    
    9
    +
    
    10
    +type Some :: (k -> Type) -> Type
    
    11
    +newtype Some tag = UnsafeSome (tag Any)
    
    12
    +type role Some representational
    
    13
    +
    
    14
    +{-# COMPLETE Some #-}
    
    15
    +pattern Some :: tag a -> Some tag
    
    16
    +pattern Some x <- UnsafeSome x
    
    17
    +  where Some x = UnsafeSome ((unsafeCoerce :: tag a -> tag Any) x)
    
    18
    +
    
    19
    +-- | Constructor.
    
    20
    +mkSome :: tag a -> Some tag
    
    21
    +mkSome = \x -> UnsafeSome (unsafeCoerce x)
    
    22
    +
    
    23
    +-- | Eliminator.
    
    24
    +withSome :: Some tag -> (forall a. tag a -> b) -> b
    
    25
    +withSome (UnsafeSome thing) some = some (unsafeCoerce thing)

  • testsuite/tests/bytecode/all.T
    ... ... @@ -5,3 +5,7 @@ test('T23068', ghci_dump_bcos + [filter_stdout_lines(r'.*bitmap: .*')], ghci_scr
    5 5
     test('T25975', extra_ways(ghci_ways), compile_and_run,
    
    6 6
          # Some of the examples work more robustly with these flags
    
    7 7
          ['-fno-break-points -fno-full-laziness'])
    
    8
    +
    
    9
    +# Nullary data constructors
    
    10
    +test('T26216', extra_files(["T26216_aux.hs"]), ghci_script, ['T26216.script'])
    
    11
    +

  • testsuite/tests/codeGen/should_run/T23146/all.T
    1 1
     test('T23146', expect_broken_for(23060, ghci_ways), compile_and_run, [''])
    
    2 2
     test('T23146_lifted', normal, compile_and_run, [''])
    
    3
    -test('T23146_liftedeq', expect_broken_for(23060, ghci_ways), compile_and_run, [''])
    
    3
    +test('T23146_liftedeq', normal, compile_and_run, [''])
    
    4 4
     test('T23146_lifted_unlifted', normal, compile_and_run, [''])

  • testsuite/tests/parser/should_run/T26415.hs
    1
    +{-# LANGUAGE MultilineStrings #-}
    
    2
    +
    
    3
    +main :: IO ()
    
    4
    +main = do
    
    5
    +  -- The below strings contain the characters ['\\', '\t', '\\']
    
    6
    +  print "\	\"
    
    7
    +  print """\	\"""

  • testsuite/tests/parser/should_run/T26415.stdout
    1
    +""
    
    2
    +""

  • testsuite/tests/parser/should_run/all.T
    ... ... @@ -27,6 +27,7 @@ test('RecordDotSyntax4', [extra_files(['RecordDotSyntaxA.hs'])], multimod_compil
    27 27
     test('RecordDotSyntax5', normal, compile_and_run, [''])
    
    28 28
     test('ListTuplePunsConstraints', extra_files(['ListTuplePunsConstraints.hs']), ghci_script, ['ListTuplePunsConstraints.script'])
    
    29 29
     test('T25937', normal, compile_and_run, [''])
    
    30
    +test('T26415', normal, compile_and_run, [''])
    
    30 31
     
    
    31 32
     # Multiline strings
    
    32 33
     test('MultilineStrings', normal, compile_and_run, [''])
    

  • testsuite/tests/typecheck/should_compile/T25960.hs
    1
    +{-# LANGUAGE LambdaCase #-}
    
    2
    +
    
    3
    +module T25960 where
    
    4
    +
    
    5
    +import Data.Void (Void)
    
    6
    +
    
    7
    +f :: (forall a. Void -> a) -> (forall a. Void -> a)
    
    8
    +f g = g
    
    9
    +
    
    10
    +absurd :: Void -> a
    
    11
    +absurd = f (\case)
    
    12
    +

  • testsuite/tests/typecheck/should_compile/all.T
    ... ... @@ -935,4 +935,4 @@ test('T24845a', normal, compile, [''])
    935 935
     test('T23501a', normal, compile, [''])
    
    936 936
     test('T23501b', normal, compile, [''])
    
    937 937
     test('T25597', normal, compile, [''])
    
    938
    -test('T26256a', normal, compile, [''])
    938
    +test('T25960', normal, compile, [''])

  • testsuite/tests/typecheck/should_fail/T25004k.hs
    1
    +{-# LANGUAGE RequiredTypeArguments, EmptyCase, LambdaCase #-}
    
    2
    +{-# OPTIONS -Wincomplete-patterns #-}
    
    3
    +
    
    4
    +module T25004k where
    
    5
    +
    
    6
    +import Data.Kind
    
    7
    +
    
    8
    +f :: ((forall k. forall (xs :: k) -> ()) -> r) -> r
    
    9
    +f cont = cont (\case {})

  • testsuite/tests/typecheck/should_fail/T25004k.stderr
    1
    +T25004k.hs:9:16: error: [GHC-48010]
    
    2
    +    • Empty list of alternatives in \case expression
    
    3
    +      checked against a forall-type: forall (xs :: k) -> ...
    
    4
    +    • In the first argument of ‘cont’, namely ‘(\case)’
    
    5
    +      In the expression: cont (\case)
    
    6
    +      In an equation for ‘f’: f cont = cont (\case)
    
    7
    +

  • testsuite/tests/typecheck/should_fail/all.T
    ... ... @@ -733,3 +733,4 @@ test('T24868', normal, compile_fail, [''])
    733 733
     test('T24938', normal, compile_fail, [''])
    
    734 734
     test('T25325', normal, compile_fail, [''])
    
    735 735
     test('T25004', normal, compile_fail, [''])
    
    736
    +test('T25004k', normal, compile_fail, [''])