summaryrefslogtreecommitdiff
path: root/testsuite/tests
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2022-12-27 10:14:16 +0000
committerBen Gamari <ben@smart-cactus.org>2023-01-25 23:01:09 -0500
commit4b2011788a43a1892f8c86e925f7f83b993577fa (patch)
tree8d2e548f9ef675292e91cedf4ccc91fa0ed10b34 /testsuite/tests
parentcb4f80152bb48db6803523c0b06e345b767e139d (diff)
downloadhaskell-4b2011788a43a1892f8c86e925f7f83b993577fa.tar.gz
Finder: Look in current unit before looking in any home package dependencies
In order to preserve existing behaviour it's important to look within the current component before consideirng a module might come from an external component. This already happened by accident in `downsweep`, (because roots are used to repopulated the cache) but in the `Finder` the logic was the wrong way around. Fixes #22680 ------------------------- Metric Decrease: MultiComponentModules MultiComponentModulesRecomp -------------------------p (cherry picked from commit e46e68fee52b46beaf9172f8397a35bad63a417a)
Diffstat (limited to 'testsuite/tests')
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/all.T3
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_import_order.stderr4
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/order-matters1/A.hs3
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/order-matters1/B.hs5
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/order-matters2/A.hs3
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/order-matters2/B.hs6
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/unitOrder11
-rw-r--r--testsuite/tests/driver/multipleHomeUnits/unitOrder21
8 files changed, 26 insertions, 0 deletions
diff --git a/testsuite/tests/driver/multipleHomeUnits/all.T b/testsuite/tests/driver/multipleHomeUnits/all.T
index d289a447a6..6b2ad64eb5 100644
--- a/testsuite/tests/driver/multipleHomeUnits/all.T
+++ b/testsuite/tests/driver/multipleHomeUnits/all.T
@@ -62,6 +62,9 @@ test('MHU_OptionsGHC', normal, compile_fail, [''])
test('multipleHomeUnits_loop', [extra_files([ 'a/', 'unitA', 'loop', 'unitLoop'])], multiunit_compile, [['unitA', 'unitLoop'], '-fhide-source-paths'])
+# This test checks that we look for things in our home unit before looking in dependencies
+test('multipleHomeUnits_import_order', [extra_files([ 'unitOrder1', 'unitOrder2', 'order-matters1', 'order-matters2'])], multiunit_compile, [['unitOrder1', 'unitOrder2'], '-fhide-source-paths'])
+
test('multipleHomeUnits_recomp', [copy_files,extra_files([ 'Recomp.hs', 'unitRecomp', 'unitDep', 'Dep.hs'])], makefile_test, [])
test('multipleHomeUnits_recomp_th', [filter_stdout_lines(r'.*Compiling.*'), copy_files, extra_files(['thRecomp.script', 'unitRecompTH', 'unitDep', 'RecompTH.hs', 'Dep.hs', '../../ghci/shell.hs']) , extra_run_opts('-v1 -unit @unitRecompTH -unit @unitDep')], ghci_script, ['thRecomp.script'])
diff --git a/testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_import_order.stderr b/testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_import_order.stderr
new file mode 100644
index 0000000000..4358ec822b
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits_import_order.stderr
@@ -0,0 +1,4 @@
+[1 of 4] Compiling A[order-matters1]
+[2 of 4] Compiling A[order-matters2]
+[3 of 4] Compiling B[order-matters1]
+[4 of 4] Compiling B[order-matters2]
diff --git a/testsuite/tests/driver/multipleHomeUnits/order-matters1/A.hs b/testsuite/tests/driver/multipleHomeUnits/order-matters1/A.hs
new file mode 100644
index 0000000000..a1934d7fab
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/order-matters1/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+a1 = ()
diff --git a/testsuite/tests/driver/multipleHomeUnits/order-matters1/B.hs b/testsuite/tests/driver/multipleHomeUnits/order-matters1/B.hs
new file mode 100644
index 0000000000..413e95083a
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/order-matters1/B.hs
@@ -0,0 +1,5 @@
+module B where
+
+import A
+
+foo = a1
diff --git a/testsuite/tests/driver/multipleHomeUnits/order-matters2/A.hs b/testsuite/tests/driver/multipleHomeUnits/order-matters2/A.hs
new file mode 100644
index 0000000000..c1b1a23f67
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/order-matters2/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+a2 = ()
diff --git a/testsuite/tests/driver/multipleHomeUnits/order-matters2/B.hs b/testsuite/tests/driver/multipleHomeUnits/order-matters2/B.hs
new file mode 100644
index 0000000000..400c23723a
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/order-matters2/B.hs
@@ -0,0 +1,6 @@
+module B where
+
+-- Refers to A from current unit
+import A
+
+foo = a2
diff --git a/testsuite/tests/driver/multipleHomeUnits/unitOrder1 b/testsuite/tests/driver/multipleHomeUnits/unitOrder1
new file mode 100644
index 0000000000..2fd867cb08
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/unitOrder1
@@ -0,0 +1 @@
+-i -iorder-matters1 A B -this-unit-id order-matters1
diff --git a/testsuite/tests/driver/multipleHomeUnits/unitOrder2 b/testsuite/tests/driver/multipleHomeUnits/unitOrder2
new file mode 100644
index 0000000000..44ee993a07
--- /dev/null
+++ b/testsuite/tests/driver/multipleHomeUnits/unitOrder2
@@ -0,0 +1 @@
+-i -iorder-matters2 A B -package-id order-matters1 -this-unit-id order-matters2