From 7eab4e019205cfced90f06242a9afa23dfcaa70b Mon Sep 17 00:00:00 2001 From: Alan Zimmerman <alan.zimm@gmail.com> Date: Wed, 1 May 2024 08:41:34 +0100 Subject: [PATCH] EPA: Widen stmtslist to include last semicolon Closes #24754 --- compiler/GHC/Parser.y | 2 +- testsuite/tests/parser/should_compile/DumpSemis.stderr | 2 +- testsuite/tests/printer/Makefile | 5 +++++ testsuite/tests/printer/Test24754.hs | 4 ++++ testsuite/tests/printer/all.T | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 testsuite/tests/printer/Test24754.hs diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y index 050c696a0a47..f3f38f3cea8b 100644 --- a/compiler/GHC/Parser.y +++ b/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,[]) } diff --git a/testsuite/tests/parser/should_compile/DumpSemis.stderr b/testsuite/tests/parser/should_compile/DumpSemis.stderr index 12af0facf54d..015d64b51af1 100644 --- a/testsuite/tests/parser/should_compile/DumpSemis.stderr +++ b/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 diff --git a/testsuite/tests/printer/Makefile b/testsuite/tests/printer/Makefile index 8b9e56cbe6d6..de55d7ae6ecb 100644 --- a/testsuite/tests/printer/Makefile +++ b/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 diff --git a/testsuite/tests/printer/Test24754.hs b/testsuite/tests/printer/Test24754.hs new file mode 100644 index 000000000000..14c02e2a7f2b --- /dev/null +++ b/testsuite/tests/printer/Test24754.hs @@ -0,0 +1,4 @@ +module Test24754 where + +eh1 = try (do return r;) <|> (do + return r) diff --git a/testsuite/tests/printer/all.T b/testsuite/tests/printer/all.T index ce076aaa8744..d6ff2ff196f1 100644 --- a/testsuite/tests/printer/all.T +++ b/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']) -- GitLab