summaryrefslogtreecommitdiff
path: root/testsuite/tests/driver
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2022-07-04 12:10:50 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-07-06 13:51:03 -0400
commit665fa5a73e385bdfce13180048701a179ec3f36a (patch)
treef21ab5b09ac3a84af6752249fe32df952ec2599f /testsuite/tests/driver
parentc5415bc5c428df72f3943fd9bf117355ae746fdb (diff)
downloadhaskell-665fa5a73e385bdfce13180048701a179ec3f36a.tar.gz
driver: Fix issue with module loops and multiple home units
We were attempting to rehydrate all dependencies of a particular module, but we actually only needed to rehydrate those of the current package (as those are the ones participating in the loop). This fixes loading GHC into a multi-unit session. Fixes #21814
Diffstat (limited to 'testsuite/tests/driver')
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/all.T2
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs5
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs-boot1
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/loop/Loop1.hs5
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_loop.stderr4
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/unitLoop1
6 files changed, 18 insertions, 0 deletions
diff --git a/testsuite/tests/driver/multipleHomeUnits/all.T b/testsuite/tests/driver/multipleHomeUnits/all.T
index c2bbf0f368..53090f2e68 100644
--- a/testsuite/tests/driver/multipleHomeUnits/all.T
+++ b/testsuite/tests/driver/multipleHomeUnits/all.T
@@ -55,3 +55,5 @@ test('multipleHomeUnitsPackageImports',
], multiunit_compile, [['unitB', 'unitB2', 'unitPI'], '-fhide-source-paths'])
test('MHU_OptionsGHC', normal, compile_fail, [''])
+
+test('multipleHomeUnits_loop', [extra_files([ 'a/', 'unitA', 'loop', 'unitLoop'])], multiunit_compile, [['unitA', 'unitLoop'], '-fhide-source-paths'])
diff --git a/testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs b/testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs
new file mode 100644
index 0000000000..c4c3de9a5d
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs
@@ -0,0 +1,5 @@
+module Loop where
+
+import Loop1
+
+import A
diff --git a/testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs-boot b/testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs-boot
new file mode 100644
index 0000000000..aa7d4f4ac5
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/loop/Loop.hs-boot
@@ -0,0 +1 @@
+module Loop where
diff --git a/testsuite/tests/driver/multipleHomeUnits/loop/Loop1.hs b/testsuite/tests/driver/multipleHomeUnits/loop/Loop1.hs
new file mode 100644
index 0000000000..140c34b6f5
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/loop/Loop1.hs
@@ -0,0 +1,5 @@
+module Loop1 where
+
+import {-# SOURCE #-} Loop
+
+import A
diff --git a/testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_loop.stderr b/testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_loop.stderr
new file mode 100644
index 0000000000..7045bacb64
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_loop.stderr
@@ -0,0 +1,4 @@
+[1 of 4] Compiling A[a]
+[2 of 4] Compiling Loop[boot][loop]
+[3 of 4] Compiling Loop1[loop]
+[4 of 4] Compiling Loop[loop]
diff --git a/testsuite/tests/driver/multipleHomeUnits/unitLoop b/testsuite/tests/driver/multipleHomeUnits/unitLoop
new file mode 100644
index 0000000000..baddcf0220
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/unitLoop
@@ -0,0 +1 @@
+-i -i./loop Loop Loop1 -package-id a -this-unit-id loop