diff options
-rw-r--r-- | compiler/hsSyn/HsUtils.hs | 6 | ||||
-rw-r--r-- | testsuite/tests/ghci.debugger/scripts/all.T | 2 | ||||
-rw-r--r-- | testsuite/tests/ghci.debugger/scripts/break029.hs | 6 | ||||
-rw-r--r-- | testsuite/tests/ghci.debugger/scripts/break029.script | 5 | ||||
-rw-r--r-- | testsuite/tests/ghci.debugger/scripts/break029.stdout | 10 |
5 files changed, 28 insertions, 1 deletions
diff --git a/compiler/hsSyn/HsUtils.hs b/compiler/hsSyn/HsUtils.hs index a759f1a35a..eba21cf1e2 100644 --- a/compiler/hsSyn/HsUtils.hs +++ b/compiler/hsSyn/HsUtils.hs @@ -1035,7 +1035,11 @@ collectStmtBinders (ParStmt _ xs _ _) = collectLStmtsBinders $ [s | ParStmtBlock _ ss _ _ <- xs, s <- ss] collectStmtBinders (TransStmt { trS_stmts = stmts }) = collectLStmtsBinders stmts collectStmtBinders (RecStmt { recS_stmts = ss }) = collectLStmtsBinders ss -collectStmtBinders ApplicativeStmt{} = [] +collectStmtBinders (ApplicativeStmt _ args _) = concatMap collectArgBinders args + where + collectArgBinders (_, ApplicativeArgOne _ pat _ _) = collectPatBinders pat + collectArgBinders (_, ApplicativeArgMany _ _ _ pat) = collectPatBinders pat + collectArgBinders _ = [] collectStmtBinders XStmtLR{} = panic "collectStmtBinders" diff --git a/testsuite/tests/ghci.debugger/scripts/all.T b/testsuite/tests/ghci.debugger/scripts/all.T index 496c637fc6..733631180d 100644 --- a/testsuite/tests/ghci.debugger/scripts/all.T +++ b/testsuite/tests/ghci.debugger/scripts/all.T @@ -105,3 +105,5 @@ test('T8557', normal, ghci_script, ['T8557.script']) test('T12458', normal, ghci_script, ['T12458.script']) test('T13825-debugger', when(arch('powerpc64'), expect_broken(14455)), ghci_script, ['T13825-debugger.script']) + +test('break029', extra_files(['break029.hs']), ghci_script, ['break029.script']) diff --git a/testsuite/tests/ghci.debugger/scripts/break029.hs b/testsuite/tests/ghci.debugger/scripts/break029.hs new file mode 100644 index 0000000000..7598d3f4b3 --- /dev/null +++ b/testsuite/tests/ghci.debugger/scripts/break029.hs @@ -0,0 +1,6 @@ +{-# LANGUAGE ApplicativeDo #-} + +f :: Int -> IO Int +f x = do + y <- return (x + 1) + return (y * 2) diff --git a/testsuite/tests/ghci.debugger/scripts/break029.script b/testsuite/tests/ghci.debugger/scripts/break029.script new file mode 100644 index 0000000000..b2e70b1ba5 --- /dev/null +++ b/testsuite/tests/ghci.debugger/scripts/break029.script @@ -0,0 +1,5 @@ +:load break029.hs +:step f 3 +:step +:step +y diff --git a/testsuite/tests/ghci.debugger/scripts/break029.stdout b/testsuite/tests/ghci.debugger/scripts/break029.stdout new file mode 100644 index 0000000000..c1d7047a8e --- /dev/null +++ b/testsuite/tests/ghci.debugger/scripts/break029.stdout @@ -0,0 +1,10 @@ +Stopped in Main.f, break029.hs:(4,7)-(6,16) +_result :: IO Int = _ +x :: Int = 3 +Stopped in Main.f, break029.hs:5:8-21 +_result :: IO Int = _ +x :: Int = 3 +Stopped in Main.f, break029.hs:6:11-15 +_result :: Int = _ +y :: Int = _ +4 |