summaryrefslogtreecommitdiff
path: root/testsuite/tests
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2018-07-22 17:03:33 +0200
committerKrzysztof Gogolewski <krz.gogolewski@gmail.com>2018-07-22 17:03:34 +0200
commit4ea9311cc5c3b99ea6915bee23f0a6776731f20e (patch)
tree0cad7a50332dab608357397f7869cb8eb364b2ac /testsuite/tests
parent5a49651f3161473b383ec497af38e9daa022b9ac (diff)
downloadhaskell-4ea9311cc5c3b99ea6915bee23f0a6776731f20e.tar.gz
Fix the GHCi debugger with ApplicativeDo
Summary: `collectLStmtsBinders` was returning nothing for `ApplicativeStmts`, which caused the debugger to not track free variables in many cases when using `ApplicativeDo`. Test Plan: * new test case * validate Reviewers: bgamari, erikd Reviewed By: bgamari Subscribers: rwbarton, thomie, carter GHC Trac Issues: #15422 Differential Revision: https://phabricator.haskell.org/D4991
Diffstat (limited to 'testsuite/tests')
-rw-r--r--testsuite/tests/ghci.debugger/scripts/all.T2
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break029.hs6
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break029.script5
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break029.stdout10
4 files changed, 23 insertions, 0 deletions
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