[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