[Git][ghc/ghc][wip/az/T24754-epa-stmtlist-semi-span] 4 commits: tests: Widen acceptance window for dir and so size tests

Alan Zimmerman (@alanz) gitlab at gitlab.haskell.org
Sat May 4 15:15:09 UTC 2024



Alan Zimmerman pushed to branch wip/az/T24754-epa-stmtlist-semi-span at Glasgow Haskell Compiler / GHC


Commits:
c49493f2 by Matthew Pickering at 2024-05-04T06:02:57-04:00
tests: Widen acceptance window for dir and so size tests

These are testing things which are sometimes out the control of a GHC
developer. Therefore we shouldn't fail CI if something about these
dependencies change because we can't do anything about it.

It is still useful to have these statistics for visualisation in grafana
though.

Ticket #24759

- - - - -
9562808d by Matthew Pickering at 2024-05-04T06:02:57-04:00
Disable rts_so test

It has already manifested large fluctuations and destabilising CI

Fixes #24762

- - - - -
fc24c5cf by Ryan Scott at 2024-05-04T06:03:33-04:00
unboxedSum{Type,Data}Name: Use GHC.Types as the module

Unboxed sum constructors are now defined in the `GHC.Types` module, so if you
manually quote an unboxed sum (e.g., `''Sum2#`), you will get a `Name` like:

```hs
GHC.Types.Sum2#
```

The `unboxedSumTypeName` function in `template-haskell`, however, mistakenly
believes that unboxed sum constructors are defined in `GHC.Prim`, so
`unboxedSumTypeName 2` would return an entirely different `Name`:

```hs
GHC.Prim.(#|#)
```

This is a problem for Template Haskell users, as it means that they can't be
sure which `Name` is the correct one. (Similarly for `unboxedSumDataName`.)

This patch fixes the implementations of `unboxedSum{Type,Data}Name` to use
`GHC.Types` as the module. For consistency with `unboxedTupleTypeName`, the
`unboxedSumTypeName` function now uses the non-punned syntax for unboxed sums
(`Sum<N>#`) as the `OccName`.

Fixes #24750.

- - - - -
7eab4e01 by Alan Zimmerman at 2024-05-04T16:14:55+01:00
EPA: Widen stmtslist to include last semicolon

Closes #24754

- - - - -


9 changed files:

- compiler/GHC/Parser.y
- libraries/template-haskell/Language/Haskell/TH/Lib/Syntax.hs
- testsuite/tests/parser/should_compile/DumpSemis.stderr
- testsuite/tests/perf/size/all.T
- testsuite/tests/printer/Makefile
- + testsuite/tests/printer/Test24754.hs
- testsuite/tests/printer/all.T
- + testsuite/tests/quotes/T24750.hs
- testsuite/tests/quotes/all.T


Changes:

=====================================
compiler/GHC/Parser.y
=====================================
@@ -3444,7 +3444,7 @@ stmts :: { forall b. DisambECP b => PV (Located (OrdList AddEpAnn,[LStmt GhcPs (
                              [] -> return (sLZ $1 $> ((fst $ unLoc $1) `snocOL` (mj AnnSemi $2),snd $ unLoc $1))
                              (h:t) -> do
                                { h' <- addTrailingSemiA h (gl $2)
-                               ; return $ sL1 $1 (fst $ unLoc $1,h':t) }}
+                               ; return $ sLZ $1 $> (fst $ unLoc $1,h':t) }}
         | stmt                   { $1 >>= \ $1 ->
                                    return $ sL1 $1 (nilOL,[$1]) }
         | {- empty -}            { return $ noLoc (nilOL,[]) }


=====================================
libraries/template-haskell/Language/Haskell/TH/Lib/Syntax.hs
=====================================
@@ -1955,7 +1955,7 @@ unboxedSumDataName alt arity
 
   | otherwise
   = Name (mkOccName sum_occ)
-         (NameG DataName (mkPkgName "ghc-prim") (mkModName "GHC.Prim"))
+         (NameG DataName (mkPkgName "ghc-prim") (mkModName "GHC.Types"))
 
   where
     prefix     = "unboxedSumDataName: "
@@ -1974,11 +1974,11 @@ unboxedSumTypeName arity
 
   | otherwise
   = Name (mkOccName sum_occ)
-         (NameG TcClsName (mkPkgName "ghc-prim") (mkModName "GHC.Prim"))
+         (NameG TcClsName (mkPkgName "ghc-prim") (mkModName "GHC.Types"))
 
   where
     -- Synced with the definition of mkSumTyConOcc in GHC.Builtin.Types
-    sum_occ = '(' : '#' : replicate (arity - 1) '|' ++ "#)"
+    sum_occ = "Sum" ++ show arity ++ "#"
 
 -----------------------------------------------------
 --              Locations


=====================================
testsuite/tests/parser/should_compile/DumpSemis.stderr
=====================================
@@ -856,7 +856,7 @@
                    (EpaSpan { DumpSemis.hs:22:10-30 })
                    (AnnList
                     (Just
-                     (EpaSpan { DumpSemis.hs:22:12-25 }))
+                     (EpaSpan { DumpSemis.hs:22:12-28 }))
                     (Just
                      (AddEpAnn AnnOpenC (EpaSpan { DumpSemis.hs:22:10 })))
                     (Just


=====================================
testsuite/tests/perf/size/all.T
=====================================
@@ -3,77 +3,80 @@ test('size_hello_obj', [collect_size(5, 'size_hello_obj.o')], compile, [''])
 test('size_hello_artifact', [collect_size(5, 'size_hello_artifact' + exe_extension())],
                              compile_artifact, [''])
 
-test('array_dir'           ,[collect_size_ghc_pkg(5 , 'array')]           , static_stats , [] )
-test('base_dir'            ,[collect_size_ghc_pkg(5 , 'base')]            , static_stats , [] )
-test('binary_dir'          ,[collect_size_ghc_pkg(5 , 'binary')]          , static_stats , [] )
-test('bytestring_dir'      ,[collect_size_ghc_pkg(5 , 'bytestring')]      , static_stats , [] )
-test('cabal_dir'           ,[collect_size_ghc_pkg(5 , 'Cabal')]           , static_stats , [] )
-test('cabal_syntax_dir'    ,[collect_size_ghc_pkg(5 , 'Cabal-syntax')]    , static_stats , [] )
-test('containers_dir'      ,[collect_size_ghc_pkg(5 , 'containers')]      , static_stats , [] )
-test('deepseq_dir'         ,[collect_size_ghc_pkg(5 , 'deepseq')]         , static_stats , [] )
-test('directory_dir'       ,[collect_size_ghc_pkg(5 , 'directory')]       , static_stats , [] )
-test('exceptions_dir'      ,[collect_size_ghc_pkg(5 , 'exceptions')]      , static_stats , [] )
-test('ghc_bignum_dir'      ,[collect_size_ghc_pkg(5 , 'ghc-bignum')]      , static_stats , [] )
-test('ghc_boot_dir'        ,[collect_size_ghc_pkg(5 , 'ghc-boot')]        , static_stats , [] )
-test('ghc_boot_th_dir'     ,[collect_size_ghc_pkg(5 , 'ghc-boot-th')]     , static_stats , [] )
-test('ghc_compact_dir'     ,[collect_size_ghc_pkg(5 , 'ghc-compact')]     , static_stats , [] )
-test('ghc_dir'             ,[collect_size_ghc_pkg(5 , 'ghc')]             , static_stats , [] )
-test('ghc_experimental_dir',[collect_size_ghc_pkg(5 , 'ghc-experimental')], static_stats , [] )
-test('ghc_heap_dir'        ,[collect_size_ghc_pkg(5 , 'ghc-heap')]        , static_stats , [] )
-test('ghc_internal_dir'    ,[collect_size_ghc_pkg(5 , 'ghc-internal')]    , static_stats , [] )
-test('ghc_platform_dir'    ,[collect_size_ghc_pkg(5 , 'ghc-platform')]    , static_stats , [] )
-test('ghc_prim_dir'        ,[collect_size_ghc_pkg(5 , 'ghc-prim')]        , static_stats , [] )
-test('ghc_toolchain_dir'   ,[collect_size_ghc_pkg(5 , 'ghc-toolchain')]   , static_stats , [] )
-test('haskeline_dir'       ,[collect_size_ghc_pkg(5 , 'haskeline')]       , static_stats , [] )
-test('hpc_dir'             ,[collect_size_ghc_pkg(5 , 'hpc')]             , static_stats , [] )
-test('integer_gmp_dir'     ,[collect_size_ghc_pkg(5 , 'integer-gmp')]     , static_stats , [] )
-test('mtl_dir'             ,[collect_size_ghc_pkg(5 , 'mtl')]             , static_stats , [] )
-test('os_string_dir'       ,[collect_size_ghc_pkg(5 , 'os-string')]       , static_stats , [] )
-test('parsec_dir'          ,[collect_size_ghc_pkg(5 , 'parsec')]          , static_stats , [] )
-test('pretty_dir'          ,[collect_size_ghc_pkg(5 , 'pretty')]          , static_stats , [] )
-test('process_dir'         ,[collect_size_ghc_pkg(5 , 'process')]         , static_stats , [] )
-test('time_dir'            ,[collect_size_ghc_pkg(5 , 'time')]            , static_stats , [] )
-test('xhtml_dir'           ,[collect_size_ghc_pkg(5 , 'xhtml')]           , static_stats , [] )
+size_acceptance_threshold = 100
+
+test('array_dir'           ,[collect_size_ghc_pkg(size_acceptance_threshold , 'array')]           , static_stats , [] )
+test('base_dir'            ,[collect_size_ghc_pkg(size_acceptance_threshold , 'base')]            , static_stats , [] )
+test('binary_dir'          ,[collect_size_ghc_pkg(size_acceptance_threshold , 'binary')]          , static_stats , [] )
+test('bytestring_dir'      ,[collect_size_ghc_pkg(size_acceptance_threshold , 'bytestring')]      , static_stats , [] )
+test('cabal_dir'           ,[collect_size_ghc_pkg(size_acceptance_threshold , 'Cabal')]           , static_stats , [] )
+test('cabal_syntax_dir'    ,[collect_size_ghc_pkg(size_acceptance_threshold , 'Cabal-syntax')]    , static_stats , [] )
+test('containers_dir'      ,[collect_size_ghc_pkg(size_acceptance_threshold , 'containers')]      , static_stats , [] )
+test('deepseq_dir'         ,[collect_size_ghc_pkg(size_acceptance_threshold , 'deepseq')]         , static_stats , [] )
+test('directory_dir'       ,[collect_size_ghc_pkg(size_acceptance_threshold , 'directory')]       , static_stats , [] )
+test('exceptions_dir'      ,[collect_size_ghc_pkg(size_acceptance_threshold , 'exceptions')]      , static_stats , [] )
+test('ghc_bignum_dir'      ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-bignum')]      , static_stats , [] )
+test('ghc_boot_dir'        ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-boot')]        , static_stats , [] )
+test('ghc_boot_th_dir'     ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-boot-th')]     , static_stats , [] )
+test('ghc_compact_dir'     ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-compact')]     , static_stats , [] )
+test('ghc_dir'             ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc')]             , static_stats , [] )
+test('ghc_experimental_dir',[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-experimental')], static_stats , [] )
+test('ghc_heap_dir'        ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-heap')]        , static_stats , [] )
+test('ghc_internal_dir'    ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-internal')]    , static_stats , [] )
+test('ghc_platform_dir'    ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-platform')]    , static_stats , [] )
+test('ghc_prim_dir'        ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-prim')]        , static_stats , [] )
+test('ghc_toolchain_dir'   ,[collect_size_ghc_pkg(size_acceptance_threshold , 'ghc-toolchain')]   , static_stats , [] )
+test('haskeline_dir'       ,[collect_size_ghc_pkg(size_acceptance_threshold , 'haskeline')]       , static_stats , [] )
+test('hpc_dir'             ,[collect_size_ghc_pkg(size_acceptance_threshold , 'hpc')]             , static_stats , [] )
+test('integer_gmp_dir'     ,[collect_size_ghc_pkg(size_acceptance_threshold , 'integer-gmp')]     , static_stats , [] )
+test('mtl_dir'             ,[collect_size_ghc_pkg(size_acceptance_threshold , 'mtl')]             , static_stats , [] )
+test('os_string_dir'       ,[collect_size_ghc_pkg(size_acceptance_threshold , 'os-string')]       , static_stats , [] )
+test('parsec_dir'          ,[collect_size_ghc_pkg(size_acceptance_threshold , 'parsec')]          , static_stats , [] )
+test('pretty_dir'          ,[collect_size_ghc_pkg(size_acceptance_threshold , 'pretty')]          , static_stats , [] )
+test('process_dir'         ,[collect_size_ghc_pkg(size_acceptance_threshold , 'process')]         , static_stats , [] )
+test('time_dir'            ,[collect_size_ghc_pkg(size_acceptance_threshold , 'time')]            , static_stats , [] )
+test('xhtml_dir'           ,[collect_size_ghc_pkg(size_acceptance_threshold , 'xhtml')]           , static_stats , [] )
 
 # size of the entire libdir
 test('libdir'              ,[collect_size_dir(10, config.libdir)]                       , static_stats , [] )
 
 # skip these on windows
-test('unix_dir'     ,[windows_skip, collect_size_ghc_pkg(5, 'unix')]    , static_stats, [] )
-test('terminfo_dir' ,[windows_skip, js_skip, collect_size_ghc_pkg(5, 'terminfo')], static_stats, [] )
+test('unix_dir'     ,[windows_skip, collect_size_ghc_pkg(size_acceptance_threshold, 'unix')]    , static_stats, [] )
+test('terminfo_dir' ,[windows_skip, js_skip, collect_size_ghc_pkg(size_acceptance_threshold, 'terminfo')], static_stats, [] )
 
 # skip the shared object file tests on windows
-test('array_so'           ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "array")]            , static_stats, [] )
-test('base_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "base")]             , static_stats, [] )
-test('binary_so'          ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "binary")]           , static_stats, [] )
-test('bytestring_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "bytestring")]       , static_stats, [] )
-test('cabal_so'           ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "Cabal")]            , static_stats, [] )
-test('cabal_syntax_so'    ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "Cabal-syntax")]     , static_stats, [] )
-test('containers_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "containers")]       , static_stats, [] )
-test('deepseq_so'         ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "deepseq")]          , static_stats, [] )
-test('directory_so'       ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "directory")]        , static_stats, [] )
-test('exceptions_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "exceptions")]       , static_stats, [] )
-test('filepath_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "filepath")]         , static_stats, [] )
-test('ghc_bignum_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-bignum")]       , static_stats, [] )
-test('ghc_boot_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-boot")]         , static_stats, [] )
-test('ghc_boot_th_so'     ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-boot-th")]      , static_stats, [] )
-test('ghc_experimental_so',[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-experimental")] , static_stats, [] )
-test('ghc_heap_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-heap")]         , static_stats, [] )
-test('ghc_platform_so'    ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-platform")]     , static_stats, [] )
-test('ghc_prim_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-prim")]         , static_stats, [] )
-test('ghc_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc")]              , static_stats, [] )
-test('ghc_toolchain_so'   ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghc-toolchain")]    , static_stats, [] )
-test('ghci_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "ghci")]             , static_stats, [] )
-test('haskeline_so'       ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "haskeline")]        , static_stats, [] )
-test('hpc_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "hpc")]              , static_stats, [] )
-test('mtl_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "mtl")]              , static_stats, [] )
-test('os_string_so'       ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "os-string")]        , static_stats, [] )
-test('parsec_so'          ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "parsec")]           , static_stats, [] )
-test('process_so'         ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "process")]          , static_stats, [] )
-test('rts_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "rts", True)]              , static_stats, [] )
-test('template_haskell_so',[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "template-haskell")] , static_stats, [] )
-test('terminfo_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "terminfo")]         , static_stats, [] )
-test('text_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "text")]             , static_stats, [] )
-test('time_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "time")]             , static_stats, [] )
-test('transformers_so'    ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "transformers")]     , static_stats, [] )
-test('xhtml_so'           ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(5, "xhtml")]            , static_stats, [] )
+test('array_so'           ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "array")]            , static_stats, [] )
+test('base_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "base")]             , static_stats, [] )
+test('binary_so'          ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "binary")]           , static_stats, [] )
+test('bytestring_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "bytestring")]       , static_stats, [] )
+test('cabal_so'           ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "Cabal")]            , static_stats, [] )
+test('cabal_syntax_so'    ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "Cabal-syntax")]     , static_stats, [] )
+test('containers_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "containers")]       , static_stats, [] )
+test('deepseq_so'         ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "deepseq")]          , static_stats, [] )
+test('directory_so'       ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "directory")]        , static_stats, [] )
+test('exceptions_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "exceptions")]       , static_stats, [] )
+test('filepath_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "filepath")]         , static_stats, [] )
+test('ghc_bignum_so'      ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-bignum")]       , static_stats, [] )
+test('ghc_boot_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-boot")]         , static_stats, [] )
+test('ghc_boot_th_so'     ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-boot-th")]      , static_stats, [] )
+test('ghc_experimental_so',[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-experimental")] , static_stats, [] )
+test('ghc_heap_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-heap")]         , static_stats, [] )
+test('ghc_platform_so'    ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-platform")]     , static_stats, [] )
+test('ghc_prim_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-prim")]         , static_stats, [] )
+test('ghc_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc")]              , static_stats, [] )
+test('ghc_toolchain_so'   ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghc-toolchain")]    , static_stats, [] )
+test('ghci_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "ghci")]             , static_stats, [] )
+test('haskeline_so'       ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "haskeline")]        , static_stats, [] )
+test('hpc_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "hpc")]              , static_stats, [] )
+test('mtl_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "mtl")]              , static_stats, [] )
+test('os_string_so'       ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "os-string")]        , static_stats, [] )
+test('parsec_so'          ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "parsec")]           , static_stats, [] )
+test('process_so'         ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "process")]          , static_stats, [] )
+# Disabled as extremely unstable
+#test('rts_so'             ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "rts", True)]              , static_stats, [] )
+test('template_haskell_so',[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "template-haskell")] , static_stats, [] )
+test('terminfo_so'        ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "terminfo")]         , static_stats, [] )
+test('text_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "text")]             , static_stats, [] )
+test('time_so'            ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "time")]             , static_stats, [] )
+test('transformers_so'    ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "transformers")]     , static_stats, [] )
+test('xhtml_so'           ,[req_dynamic_ghc, js_skip, windows_skip, collect_object_size(size_acceptance_threshold, "xhtml")]            , static_stats, [] )


=====================================
testsuite/tests/printer/Makefile
=====================================
@@ -851,3 +851,8 @@ DataDeclShort:
 Test24749:
 	$(CHECK_PPR)   $(LIBDIR) Test24749.hs
 	$(CHECK_EXACT) $(LIBDIR) Test24749.hs
+
+.PHONY: Test24754
+Test24754:
+	$(CHECK_PPR)   $(LIBDIR) Test24754.hs
+	$(CHECK_EXACT) $(LIBDIR) Test24754.hs


=====================================
testsuite/tests/printer/Test24754.hs
=====================================
@@ -0,0 +1,4 @@
+module Test24754 where
+
+eh1  =  try (do return r;) <|> (do
+                return r)


=====================================
testsuite/tests/printer/all.T
=====================================
@@ -203,3 +203,4 @@ test('MatchPatComments', [ignore_stderr, req_ppr_deps], makefile_test, ['MatchPa
 test('Test24748', [ignore_stderr, req_ppr_deps], makefile_test, ['Test24748'])
 test('DataDeclShort', [ignore_stderr, req_ppr_deps], makefile_test, ['DataDeclShort'])
 test('Test24749', [ignore_stderr, req_ppr_deps], makefile_test, ['Test24749'])
+test('Test24754', [ignore_stderr, req_ppr_deps], makefile_test, ['Test24754'])


=====================================
testsuite/tests/quotes/T24750.hs
=====================================
@@ -0,0 +1,35 @@
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE TemplateHaskellQuotes #-}
+{-# LANGUAGE UnboxedTuples #-}
+-- A regression test for #24750. This test ensures that a family of functions
+-- from the `template-haskell` library (tupeTypeName, tupleDataName, etc.)
+-- returns the same Names as when you manually quote the names using
+-- TemplateHaskellQuotes.
+module Main (main) where
+
+import Control.Monad (unless)
+import GHC.Tuple (Tuple2)
+import GHC.Types (Sum2#, Tuple2#)
+import Language.Haskell.TH
+
+test :: Name -> Name -> IO ()
+test n1 n2 =
+  unless (n1 == n2) $
+    fail $ unlines
+      [ "Names are not equal"
+      , "LHS name: " ++ show n1
+      , "RHS name: " ++ show n2
+      ]
+
+main :: IO ()
+main = do
+  test (tupleTypeName 2) ''(,)
+  test (tupleTypeName 2) ''Tuple2
+  test (tupleDataName 2) '(,)
+  test (unboxedTupleTypeName 2) ''(#,#)
+  test (unboxedTupleTypeName 2) ''Tuple2#
+  test (unboxedTupleDataName 2) '(#,#)
+  test (unboxedSumTypeName 2) ''Sum2#
+  -- There is currently no way to manually quote an unboxed sum data constructor
+  -- Name, as you cannot write unboxed sum data constructors in prefix form. As
+  -- such, a test case for `unboxedSumDataName` is omitted.


=====================================
testsuite/tests/quotes/all.T
=====================================
@@ -42,3 +42,4 @@ test('T20688', normal, compile, ['-Wimplicit-lift -Werror'])
 test('T20893', normal, compile_and_run, [''])
 test('T21619', normal, compile, [''])
 test('T20472_quotes', normal, compile, [''])
+test('T24750', normal, compile_and_run, [''])



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/41d1ee1824f84f520764ed80901a18b45bc01809...7eab4e019205cfced90f06242a9afa23dfcaa70b

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/41d1ee1824f84f520764ed80901a18b45bc01809...7eab4e019205cfced90f06242a9afa23dfcaa70b
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20240504/cde5811b/attachment-0001.html>


More information about the ghc-commits mailing list