summaryrefslogtreecommitdiff
path: root/testsuite/tests
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests')
-rw-r--r--testsuite/tests/backpack/reexport/Makefile11
-rw-r--r--testsuite/tests/backpack/reexport/all.T4
-rw-r--r--testsuite/tests/backpack/reexport/bkpreex03.bkp2
-rw-r--r--testsuite/tests/backpack/reexport/bkpreex03.stderr5
-rw-r--r--testsuite/tests/backpack/reexport/bkpreex03.stdout6
-rw-r--r--testsuite/tests/backpack/reexport/bkpreex04.bkp2
-rw-r--r--testsuite/tests/backpack/reexport/bkpreex04.stderr4
-rw-r--r--testsuite/tests/backpack/reexport/bkpreex04.stdout5
-rw-r--r--testsuite/tests/backpack/reexport/bkpreex04a.bkp6
-rw-r--r--testsuite/tests/backpack/should_compile/bkp58.stderr10
-rw-r--r--testsuite/tests/backpack/should_compile/bkp60.stderr10
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail28.stderr10
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail49.stderr7
-rw-r--r--testsuite/tests/count-deps/CountDepsAst.stdout3
-rw-r--r--testsuite/tests/count-deps/CountDepsParser.stdout3
-rw-r--r--testsuite/tests/driver/T14075/T14075.stdout3
-rw-r--r--testsuite/tests/driver/T20030/test1/A.hs3
-rw-r--r--testsuite/tests/driver/T20030/test1/A.hs-boot2
-rw-r--r--testsuite/tests/driver/T20030/test1/B.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/C.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/C.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test1/D.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/E.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/E.hs-boot2
-rw-r--r--testsuite/tests/driver/T20030/test1/F.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/G.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/H.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/I.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/J.hs1
-rw-r--r--testsuite/tests/driver/T20030/test1/J.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test1/K.hs2
-rw-r--r--testsuite/tests/driver/T20030/test1/T20030_test1.stderr13
-rw-r--r--testsuite/tests/driver/T20030/test1/all.T6
-rw-r--r--testsuite/tests/driver/T20030/test2/L.hs3
-rw-r--r--testsuite/tests/driver/T20030/test2/L.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test2/M.hs2
-rw-r--r--testsuite/tests/driver/T20030/test2/M.hs-boot2
-rw-r--r--testsuite/tests/driver/T20030/test2/O.hs3
-rw-r--r--testsuite/tests/driver/T20030/test2/O.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test2/T20030_test2.stderr6
-rw-r--r--testsuite/tests/driver/T20030/test2/all.T4
-rw-r--r--testsuite/tests/driver/T20030/test3/L.hs4
-rw-r--r--testsuite/tests/driver/T20030/test3/L.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test3/M.hs2
-rw-r--r--testsuite/tests/driver/T20030/test3/M.hs-boot2
-rw-r--r--testsuite/tests/driver/T20030/test3/N.hs3
-rw-r--r--testsuite/tests/driver/T20030/test3/N.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test3/O.hs3
-rw-r--r--testsuite/tests/driver/T20030/test3/O.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test3/T20030_test3.stderr7
-rw-r--r--testsuite/tests/driver/T20030/test3/all.T4
-rw-r--r--testsuite/tests/driver/T20030/test4/L1.hs4
-rw-r--r--testsuite/tests/driver/T20030/test4/L1.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test4/L1_1.hs2
-rw-r--r--testsuite/tests/driver/T20030/test4/L2.hs3
-rw-r--r--testsuite/tests/driver/T20030/test4/L2.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test4/L2_1.hs2
-rw-r--r--testsuite/tests/driver/T20030/test4/M.hs3
-rw-r--r--testsuite/tests/driver/T20030/test4/T20030_test4.stderr10
-rw-r--r--testsuite/tests/driver/T20030/test4/UOL1.hs4
-rw-r--r--testsuite/tests/driver/T20030/test4/UOL1_2.hs4
-rw-r--r--testsuite/tests/driver/T20030/test4/UOL2.hs4
-rw-r--r--testsuite/tests/driver/T20030/test4/all.T6
-rw-r--r--testsuite/tests/driver/T20030/test5/L1.hs4
-rw-r--r--testsuite/tests/driver/T20030/test5/L1.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test5/L1_1.hs2
-rw-r--r--testsuite/tests/driver/T20030/test5/L2.hs3
-rw-r--r--testsuite/tests/driver/T20030/test5/L2.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test5/L2_1.hs2
-rw-r--r--testsuite/tests/driver/T20030/test5/T20030_test5.stderr9
-rw-r--r--testsuite/tests/driver/T20030/test5/UOL1.hs3
-rw-r--r--testsuite/tests/driver/T20030/test5/UOL1_2.hs4
-rw-r--r--testsuite/tests/driver/T20030/test5/UOL2.hs3
-rw-r--r--testsuite/tests/driver/T20030/test5/all.T6
-rw-r--r--testsuite/tests/driver/T20030/test6/L1.hs3
-rw-r--r--testsuite/tests/driver/T20030/test6/L1.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test6/L1_1.hs2
-rw-r--r--testsuite/tests/driver/T20030/test6/L1_2.hs3
-rw-r--r--testsuite/tests/driver/T20030/test6/L2.hs2
-rw-r--r--testsuite/tests/driver/T20030/test6/L2.hs-boot1
-rw-r--r--testsuite/tests/driver/T20030/test6/L2_1.hs2
-rw-r--r--testsuite/tests/driver/T20030/test6/L2_2.hs3
-rw-r--r--testsuite/tests/driver/T20030/test6/T20030_test6.stderr12
-rw-r--r--testsuite/tests/driver/T20030/test6/UOL1.hs3
-rw-r--r--testsuite/tests/driver/T20030/test6/UOL1_1.hs3
-rw-r--r--testsuite/tests/driver/T20030/test6/UOL1_2.hs4
-rw-r--r--testsuite/tests/driver/T20030/test6/UOL2.hs3
-rw-r--r--testsuite/tests/driver/T20030/test6/all.T6
-rw-r--r--testsuite/tests/driver/recomp-boot/recomp-boot.stdout4
-rw-r--r--testsuite/tests/driver/recomp-boot2/recomp-boot2.stdout4
-rw-r--r--testsuite/tests/ghci/prog018/prog018.stdout4
-rw-r--r--testsuite/tests/plugins/T11244.stderr4
92 files changed, 292 insertions, 42 deletions
diff --git a/testsuite/tests/backpack/reexport/Makefile b/testsuite/tests/backpack/reexport/Makefile
index 9101fbd40a..eca0a161dd 100644
--- a/testsuite/tests/backpack/reexport/Makefile
+++ b/testsuite/tests/backpack/reexport/Makefile
@@ -1,3 +1,14 @@
TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+
+# Testing recompilation for backpack
+bkpreex03:
+ "$(TEST_HC)" $(TEST_HC_OPTS) -v1 --backpack bkpreex03.bkp -fhide-source-paths
+ sed -i 's/import M1/import M2/' bkpreex03.bkp
+ "$(TEST_HC)" $(TEST_HC_OPTS) -v1 --backpack bkpreex03.bkp -fhide-source-paths
+
+bkpreex04:
+ "$(TEST_HC)" $(TEST_HC_OPTS) -v1 --backpack bkpreex04.bkp -fhide-source-paths
+ cp bkpreex04a.bkp bkpreex04.bkp
+ "$(TEST_HC)" $(TEST_HC_OPTS) -v1 --backpack bkpreex04.bkp -fhide-source-paths
diff --git a/testsuite/tests/backpack/reexport/all.T b/testsuite/tests/backpack/reexport/all.T
index 5619707e5d..f677f01f2e 100644
--- a/testsuite/tests/backpack/reexport/all.T
+++ b/testsuite/tests/backpack/reexport/all.T
@@ -1,7 +1,7 @@
test('bkpreex01', normal, backpack_typecheck, [''])
test('bkpreex02', normal, backpack_typecheck, [''])
-test('bkpreex03', normal, backpack_typecheck, [''])
-test('bkpreex04', normal, backpack_typecheck, [''])
+test('bkpreex03', [copy_files], makefile_test, [])
+test('bkpreex04', [copy_files], makefile_test, [])
# These signatures are behaving badly and the renamer gets confused
test('bkpreex05', expect_broken(0), backpack_typecheck, [''])
test('bkpreex06', normal, backpack_typecheck, [''])
diff --git a/testsuite/tests/backpack/reexport/bkpreex03.bkp b/testsuite/tests/backpack/reexport/bkpreex03.bkp
index 69da4a4ddc..706047c243 100644
--- a/testsuite/tests/backpack/reexport/bkpreex03.bkp
+++ b/testsuite/tests/backpack/reexport/bkpreex03.bkp
@@ -5,5 +5,3 @@ unit p where
data M = M
signature A(module A, M) where
import M1
- signature A(module A, M) where
- import M2
diff --git a/testsuite/tests/backpack/reexport/bkpreex03.stderr b/testsuite/tests/backpack/reexport/bkpreex03.stderr
deleted file mode 100644
index 0fc295c018..0000000000
--- a/testsuite/tests/backpack/reexport/bkpreex03.stderr
+++ /dev/null
@@ -1,5 +0,0 @@
-[1 of 1] Processing p
- [1 of 4] Compiling M1 ( p/M1.hs, nothing )
- [2 of 4] Compiling M2 ( p/M2.hs, nothing )
- [3 of 4] Compiling A[sig] ( p/A.hsig, nothing )
- [4 of 4] Compiling A[sig] ( p/A.hsig, nothing ) [M2 added]
diff --git a/testsuite/tests/backpack/reexport/bkpreex03.stdout b/testsuite/tests/backpack/reexport/bkpreex03.stdout
new file mode 100644
index 0000000000..f35b52c198
--- /dev/null
+++ b/testsuite/tests/backpack/reexport/bkpreex03.stdout
@@ -0,0 +1,6 @@
+[1 of 1] Processing p
+[1 of 3] Compiling M1
+[2 of 3] Compiling M2
+[3 of 3] Compiling A[sig]
+[1 of 1] Processing p
+[3 of 3] Compiling A[sig] [M2 added]
diff --git a/testsuite/tests/backpack/reexport/bkpreex04.bkp b/testsuite/tests/backpack/reexport/bkpreex04.bkp
index 4788b4ab04..e504a7603e 100644
--- a/testsuite/tests/backpack/reexport/bkpreex04.bkp
+++ b/testsuite/tests/backpack/reexport/bkpreex04.bkp
@@ -3,5 +3,3 @@ unit p where
data T
signature B where
data T
- signature A(module A, T) where
- import B(T)
diff --git a/testsuite/tests/backpack/reexport/bkpreex04.stderr b/testsuite/tests/backpack/reexport/bkpreex04.stderr
deleted file mode 100644
index 83c42910d6..0000000000
--- a/testsuite/tests/backpack/reexport/bkpreex04.stderr
+++ /dev/null
@@ -1,4 +0,0 @@
-[1 of 1] Processing p
- [1 of 3] Compiling A[sig] ( p/A.hsig, nothing )
- [2 of 3] Compiling B[sig] ( p/B.hsig, nothing )
- [3 of 3] Compiling A[sig] ( p/A.hsig, nothing ) [B added]
diff --git a/testsuite/tests/backpack/reexport/bkpreex04.stdout b/testsuite/tests/backpack/reexport/bkpreex04.stdout
new file mode 100644
index 0000000000..376747c456
--- /dev/null
+++ b/testsuite/tests/backpack/reexport/bkpreex04.stdout
@@ -0,0 +1,5 @@
+[1 of 1] Processing p
+[1 of 2] Compiling A[sig]
+[2 of 2] Compiling B[sig]
+[1 of 1] Processing p
+[2 of 2] Compiling A[sig] [B added]
diff --git a/testsuite/tests/backpack/reexport/bkpreex04a.bkp b/testsuite/tests/backpack/reexport/bkpreex04a.bkp
new file mode 100644
index 0000000000..095e092a54
--- /dev/null
+++ b/testsuite/tests/backpack/reexport/bkpreex04a.bkp
@@ -0,0 +1,6 @@
+unit p where
+ signature B where
+ data T
+ signature A(module A, T) where
+ import B(T)
+
diff --git a/testsuite/tests/backpack/should_compile/bkp58.stderr b/testsuite/tests/backpack/should_compile/bkp58.stderr
index c5ce8bd55f..a33a9d66bc 100644
--- a/testsuite/tests/backpack/should_compile/bkp58.stderr
+++ b/testsuite/tests/backpack/should_compile/bkp58.stderr
@@ -1,13 +1,13 @@
[1 of 3] Processing common
Instantiating common
- [1 of 1] Compiling Class ( common/Class.hs, bkp58.out/common/Class.o )
+[1 of 1] Compiling Class ( common/Class.hs, bkp58.out/common/Class.o )
[2 of 3] Processing consumer-impl
Instantiating consumer-impl
[1 of 1] Including common
- [1 of 3] Compiling Impl[boot] ( consumer-impl/Impl.hs-boot, bkp58.out/consumer-impl/Impl.o-boot )
- [2 of 3] Compiling Downstream ( consumer-impl/Downstream.hs, bkp58.out/consumer-impl/Downstream.o )
- [3 of 3] Compiling Impl ( consumer-impl/Impl.hs, bkp58.out/consumer-impl/Impl.o )
+[1 of 3] Compiling Impl[boot] ( consumer-impl/Impl.hs-boot, bkp58.out/consumer-impl/Impl.o-boot )
+[2 of 3] Compiling Downstream ( consumer-impl/Downstream.hs, bkp58.out/consumer-impl/Downstream.o )
+[3 of 3] Compiling Impl ( consumer-impl/Impl.hs, bkp58.out/consumer-impl/Impl.o )
[3 of 3] Processing tie
Instantiating tie
[1 of 1] Including consumer-impl
- [1 of 1] Compiling Tie ( tie/Tie.hs, bkp58.out/tie/Tie.o )
+[1 of 1] Compiling Tie ( tie/Tie.hs, bkp58.out/tie/Tie.o )
diff --git a/testsuite/tests/backpack/should_compile/bkp60.stderr b/testsuite/tests/backpack/should_compile/bkp60.stderr
index 070a908b17..8e22b1058e 100644
--- a/testsuite/tests/backpack/should_compile/bkp60.stderr
+++ b/testsuite/tests/backpack/should_compile/bkp60.stderr
@@ -1,13 +1,13 @@
[1 of 3] Processing common
Instantiating common
- [1 of 1] Compiling Class ( common/Class.hs, bkp60.out/common/Class.o )
+[1 of 1] Compiling Class ( common/Class.hs, bkp60.out/common/Class.o )
[2 of 3] Processing consumer-impl
Instantiating consumer-impl
[1 of 1] Including common
- [1 of 3] Compiling Impl[boot] ( consumer-impl/Impl.hs-boot, bkp60.out/consumer-impl/Impl.o-boot )
- [2 of 3] Compiling Downstream ( consumer-impl/Downstream.hs, bkp60.out/consumer-impl/Downstream.o )
- [3 of 3] Compiling Impl ( consumer-impl/Impl.hs, bkp60.out/consumer-impl/Impl.o )
+[1 of 3] Compiling Impl[boot] ( consumer-impl/Impl.hs-boot, bkp60.out/consumer-impl/Impl.o-boot )
+[2 of 3] Compiling Downstream ( consumer-impl/Downstream.hs, bkp60.out/consumer-impl/Downstream.o )
+[3 of 3] Compiling Impl ( consumer-impl/Impl.hs, bkp60.out/consumer-impl/Impl.o )
[3 of 3] Processing tie
Instantiating tie
[1 of 1] Including consumer-impl
- [1 of 1] Compiling Tie ( tie/Tie.hs, bkp60.out/tie/Tie.o )
+[1 of 1] Compiling Tie ( tie/Tie.hs, bkp60.out/tie/Tie.o )
diff --git a/testsuite/tests/backpack/should_fail/bkpfail28.stderr b/testsuite/tests/backpack/should_fail/bkpfail28.stderr
index ef8d72cfe3..d6f267648c 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail28.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail28.stderr
@@ -1,10 +1,10 @@
[1 of 3] Processing p
- [1 of 1] Compiling A[sig] ( p/A.hsig, nothing )
+[1 of 1] Compiling A[sig] ( p/A.hsig, nothing )
[2 of 3] Processing q
- [1 of 1] Compiling A[sig] ( q/A.hsig, nothing )
+[1 of 1] Compiling A[sig] ( q/A.hsig, nothing )
[3 of 3] Processing r
- [1 of 4] Compiling A[sig] ( r/A.hsig, nothing )
- [2 of 4] Compiling R ( r/R.hs, nothing )
+[1 of 4] Compiling A[sig] ( r/A.hsig, nothing )
+[2 of 4] Compiling R ( r/R.hs, nothing )
bkpfail28.bkp:19:13: error:
• Overlapping instances for Show (K a) arising from a use of ‘show’
@@ -25,3 +25,5 @@ bkpfail28.bkp:21:13: error:
-- Defined at bkpfail28.bkp:12:18
• In the expression: show
In an equation for ‘g’: g = show
+[3 of 4] Instantiating p
+[4 of 4] Instantiating q
diff --git a/testsuite/tests/backpack/should_fail/bkpfail49.stderr b/testsuite/tests/backpack/should_fail/bkpfail49.stderr
index 27892ec8cf..a140bbfade 100644
--- a/testsuite/tests/backpack/should_fail/bkpfail49.stderr
+++ b/testsuite/tests/backpack/should_fail/bkpfail49.stderr
@@ -1,9 +1,10 @@
[1 of 2] Processing p
- [1 of 1] Compiling A[sig] ( p/A.hsig, nothing )
+[1 of 1] Compiling A[sig] ( p/A.hsig, nothing )
[2 of 2] Processing q
- [1 of 3] Compiling A[sig] ( q/A.hsig, nothing )
- [2 of 3] Compiling M ( q/M.hs, nothing )
+[1 of 3] Compiling A[sig] ( q/A.hsig, nothing )
+[2 of 3] Compiling M ( q/M.hs, nothing )
bkpfail49.bkp:11:13: error:
Not in scope: data constructor ‘A.True’
Module ‘A’ does not export ‘True’.
+[3 of 3] Instantiating p
diff --git a/testsuite/tests/count-deps/CountDepsAst.stdout b/testsuite/tests/count-deps/CountDepsAst.stdout
index bde8fc08da..54887612bd 100644
--- a/testsuite/tests/count-deps/CountDepsAst.stdout
+++ b/testsuite/tests/count-deps/CountDepsAst.stdout
@@ -1,4 +1,4 @@
-Found 275 Language.Haskell.Syntax module dependencies
+Found 276 Language.Haskell.Syntax module dependencies
GHC.Builtin.Names
GHC.Builtin.PrimOps
GHC.Builtin.Types
@@ -88,6 +88,7 @@ GHC.Driver.Config.Diagnostic
GHC.Driver.Config.Finder
GHC.Driver.Config.Logger
GHC.Driver.Env
+GHC.Driver.Env.KnotVars
GHC.Driver.Env.Types
GHC.Driver.Errors
GHC.Driver.Errors.Ppr
diff --git a/testsuite/tests/count-deps/CountDepsParser.stdout b/testsuite/tests/count-deps/CountDepsParser.stdout
index 48c1791fed..7718ba68b9 100644
--- a/testsuite/tests/count-deps/CountDepsParser.stdout
+++ b/testsuite/tests/count-deps/CountDepsParser.stdout
@@ -1,4 +1,4 @@
-Found 281 GHC.Parser module dependencies
+Found 282 GHC.Parser module dependencies
GHC.Builtin.Names
GHC.Builtin.PrimOps
GHC.Builtin.Types
@@ -89,6 +89,7 @@ GHC.Driver.Config.Diagnostic
GHC.Driver.Config.Finder
GHC.Driver.Config.Logger
GHC.Driver.Env
+GHC.Driver.Env.KnotVars
GHC.Driver.Env.Types
GHC.Driver.Errors
GHC.Driver.Errors.Ppr
diff --git a/testsuite/tests/driver/T14075/T14075.stdout b/testsuite/tests/driver/T14075/T14075.stdout
index 18f17be1ee..f5fac2d604 100644
--- a/testsuite/tests/driver/T14075/T14075.stdout
+++ b/testsuite/tests/driver/T14075/T14075.stdout
@@ -1,3 +1,4 @@
[1 of 4] Compiling O ( O.hs, O.o )
[2 of 4] Compiling F[boot] ( F.hs-boot, F.o-boot )
-[3 of 4] Compiling F ( F.hs, F.o )
+[3 of 4] Compiling V ( V.hs, V.o )
+[4 of 4] Compiling F ( F.hs, F.o )
diff --git a/testsuite/tests/driver/T20030/test1/A.hs b/testsuite/tests/driver/T20030/test1/A.hs
new file mode 100644
index 0000000000..0939b424b6
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/A.hs
@@ -0,0 +1,3 @@
+module A where
+import B
+import {-# SOURCE #-} C
diff --git a/testsuite/tests/driver/T20030/test1/A.hs-boot b/testsuite/tests/driver/T20030/test1/A.hs-boot
new file mode 100644
index 0000000000..7a3fe29d8e
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/A.hs-boot
@@ -0,0 +1,2 @@
+module A where
+
diff --git a/testsuite/tests/driver/T20030/test1/B.hs b/testsuite/tests/driver/T20030/test1/B.hs
new file mode 100644
index 0000000000..f547edd059
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/B.hs
@@ -0,0 +1,2 @@
+module B where
+import {-# SOURCE #-} A
diff --git a/testsuite/tests/driver/T20030/test1/C.hs b/testsuite/tests/driver/T20030/test1/C.hs
new file mode 100644
index 0000000000..e1ec081d7d
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/C.hs
@@ -0,0 +1,2 @@
+module C where
+import A
diff --git a/testsuite/tests/driver/T20030/test1/C.hs-boot b/testsuite/tests/driver/T20030/test1/C.hs-boot
new file mode 100644
index 0000000000..5831959653
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/C.hs-boot
@@ -0,0 +1 @@
+module C where
diff --git a/testsuite/tests/driver/T20030/test1/D.hs b/testsuite/tests/driver/T20030/test1/D.hs
new file mode 100644
index 0000000000..2a69831ec3
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/D.hs
@@ -0,0 +1,2 @@
+module D where
+import {-# SOURCE #-} A
diff --git a/testsuite/tests/driver/T20030/test1/E.hs b/testsuite/tests/driver/T20030/test1/E.hs
new file mode 100644
index 0000000000..0861ef3a17
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/E.hs
@@ -0,0 +1,2 @@
+module E where
+import H
diff --git a/testsuite/tests/driver/T20030/test1/E.hs-boot b/testsuite/tests/driver/T20030/test1/E.hs-boot
new file mode 100644
index 0000000000..b5e8daaa2e
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/E.hs-boot
@@ -0,0 +1,2 @@
+module E where
+import B
diff --git a/testsuite/tests/driver/T20030/test1/F.hs b/testsuite/tests/driver/T20030/test1/F.hs
new file mode 100644
index 0000000000..6fd57e32e1
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/F.hs
@@ -0,0 +1,2 @@
+module F where
+import A
diff --git a/testsuite/tests/driver/T20030/test1/G.hs b/testsuite/tests/driver/T20030/test1/G.hs
new file mode 100644
index 0000000000..7287622ff1
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/G.hs
@@ -0,0 +1,2 @@
+module G where
+import {-# SOURCE #-} E
diff --git a/testsuite/tests/driver/T20030/test1/H.hs b/testsuite/tests/driver/T20030/test1/H.hs
new file mode 100644
index 0000000000..26a5e7d9ec
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/H.hs
@@ -0,0 +1,2 @@
+module H where
+import G
diff --git a/testsuite/tests/driver/T20030/test1/I.hs b/testsuite/tests/driver/T20030/test1/I.hs
new file mode 100644
index 0000000000..c99f7b4a79
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/I.hs
@@ -0,0 +1,2 @@
+module I where
+import G
diff --git a/testsuite/tests/driver/T20030/test1/J.hs b/testsuite/tests/driver/T20030/test1/J.hs
new file mode 100644
index 0000000000..4d669568c9
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/J.hs
@@ -0,0 +1 @@
+module J where
diff --git a/testsuite/tests/driver/T20030/test1/J.hs-boot b/testsuite/tests/driver/T20030/test1/J.hs-boot
new file mode 100644
index 0000000000..4d669568c9
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/J.hs-boot
@@ -0,0 +1 @@
+module J where
diff --git a/testsuite/tests/driver/T20030/test1/K.hs b/testsuite/tests/driver/T20030/test1/K.hs
new file mode 100644
index 0000000000..ac0b673e12
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/K.hs
@@ -0,0 +1,2 @@
+module K where
+import {-# SOURCE #-} J
diff --git a/testsuite/tests/driver/T20030/test1/T20030_test1.stderr b/testsuite/tests/driver/T20030/test1/T20030_test1.stderr
new file mode 100644
index 0000000000..81b29def80
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/T20030_test1.stderr
@@ -0,0 +1,13 @@
+[ 1 of 13] Compiling A[boot] ( A.hs-boot, A.o-boot )
+[ 2 of 13] Compiling B ( B.hs, B.o )
+[ 3 of 13] Compiling C[boot] ( C.hs-boot, C.o-boot )
+[ 4 of 13] Compiling A ( A.hs, A.o )
+[ 5 of 13] Compiling C ( C.hs, C.o )
+[ 6 of 13] Compiling E[boot] ( E.hs-boot, E.o-boot )
+[ 7 of 13] Compiling G ( G.hs, G.o )
+[ 8 of 13] Compiling H ( H.hs, H.o )
+[ 9 of 13] Compiling E ( E.hs, E.o )
+[10 of 13] Compiling I ( I.hs, I.o )
+[11 of 13] Compiling J[boot] ( J.hs-boot, J.o-boot )
+[12 of 13] Compiling K ( K.hs, K.o )
+[13 of 13] Compiling J ( J.hs, J.o )
diff --git a/testsuite/tests/driver/T20030/test1/all.T b/testsuite/tests/driver/T20030/test1/all.T
new file mode 100644
index 0000000000..43aa5f424c
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test1/all.T
@@ -0,0 +1,6 @@
+test('T20030_test1',
+ [ extra_files([ 'A.hs-boot' , 'A.hs' , 'B.hs' , 'C.hs-boot' , 'C.hs'
+ , 'D.hs' , 'E.hs-boot' , 'E.hs' , 'F.hs' , 'G.hs' , 'H.hs'
+ , 'I.hs', 'J.hs-boot', 'J.hs', 'K.hs' ])
+ ],
+ multimod_compile, ['I.hs K.hs', '-v1'])
diff --git a/testsuite/tests/driver/T20030/test2/L.hs b/testsuite/tests/driver/T20030/test2/L.hs
new file mode 100644
index 0000000000..30a8919778
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/L.hs
@@ -0,0 +1,3 @@
+module L where
+import {-# SOURCE #-} M
+import {-# SOURCE #-} O
diff --git a/testsuite/tests/driver/T20030/test2/L.hs-boot b/testsuite/tests/driver/T20030/test2/L.hs-boot
new file mode 100644
index 0000000000..cae1f2e2c5
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/L.hs-boot
@@ -0,0 +1 @@
+module L where
diff --git a/testsuite/tests/driver/T20030/test2/M.hs b/testsuite/tests/driver/T20030/test2/M.hs
new file mode 100644
index 0000000000..d2236c1ecd
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/M.hs
@@ -0,0 +1,2 @@
+module M where
+import L
diff --git a/testsuite/tests/driver/T20030/test2/M.hs-boot b/testsuite/tests/driver/T20030/test2/M.hs-boot
new file mode 100644
index 0000000000..de9a6f0784
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/M.hs-boot
@@ -0,0 +1,2 @@
+module M where
+import {-# SOURCE #-} L
diff --git a/testsuite/tests/driver/T20030/test2/O.hs b/testsuite/tests/driver/T20030/test2/O.hs
new file mode 100644
index 0000000000..429e1ac50b
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/O.hs
@@ -0,0 +1,3 @@
+module O where
+import {-# SOURCE #-} L
+import {-# SOURCE #-} M
diff --git a/testsuite/tests/driver/T20030/test2/O.hs-boot b/testsuite/tests/driver/T20030/test2/O.hs-boot
new file mode 100644
index 0000000000..230b9e3014
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/O.hs-boot
@@ -0,0 +1 @@
+module O where
diff --git a/testsuite/tests/driver/T20030/test2/T20030_test2.stderr b/testsuite/tests/driver/T20030/test2/T20030_test2.stderr
new file mode 100644
index 0000000000..1597ec42a5
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/T20030_test2.stderr
@@ -0,0 +1,6 @@
+[1 of 6] Compiling L[boot] ( L.hs-boot, L.o-boot )
+[2 of 6] Compiling M[boot] ( M.hs-boot, M.o-boot )
+[3 of 6] Compiling O[boot] ( O.hs-boot, O.o-boot )
+[4 of 6] Compiling O ( O.hs, O.o )
+[5 of 6] Compiling L ( L.hs, L.o )
+[6 of 6] Compiling M ( M.hs, M.o )
diff --git a/testsuite/tests/driver/T20030/test2/all.T b/testsuite/tests/driver/T20030/test2/all.T
new file mode 100644
index 0000000000..7b0ae0ec4d
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test2/all.T
@@ -0,0 +1,4 @@
+test('T20030_test2',
+ [ extra_files([ 'L.hs', 'L.hs-boot', 'M.hs', 'M.hs-boot', 'O.hs', 'O.hs-boot' ])
+ ],
+ multimod_compile, ['O.hs', '-v1'])
diff --git a/testsuite/tests/driver/T20030/test3/L.hs b/testsuite/tests/driver/T20030/test3/L.hs
new file mode 100644
index 0000000000..2188d6e9d4
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/L.hs
@@ -0,0 +1,4 @@
+module L where
+import {-# SOURCE #-} M
+import {-# SOURCE #-} O
+-- import N
diff --git a/testsuite/tests/driver/T20030/test3/L.hs-boot b/testsuite/tests/driver/T20030/test3/L.hs-boot
new file mode 100644
index 0000000000..cae1f2e2c5
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/L.hs-boot
@@ -0,0 +1 @@
+module L where
diff --git a/testsuite/tests/driver/T20030/test3/M.hs b/testsuite/tests/driver/T20030/test3/M.hs
new file mode 100644
index 0000000000..d2236c1ecd
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/M.hs
@@ -0,0 +1,2 @@
+module M where
+import L
diff --git a/testsuite/tests/driver/T20030/test3/M.hs-boot b/testsuite/tests/driver/T20030/test3/M.hs-boot
new file mode 100644
index 0000000000..de9a6f0784
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/M.hs-boot
@@ -0,0 +1,2 @@
+module M where
+import {-# SOURCE #-} L
diff --git a/testsuite/tests/driver/T20030/test3/N.hs b/testsuite/tests/driver/T20030/test3/N.hs
new file mode 100644
index 0000000000..3fe640c1e6
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/N.hs
@@ -0,0 +1,3 @@
+module N where
+-- import {-# SOURCE #-} M
+import O
diff --git a/testsuite/tests/driver/T20030/test3/N.hs-boot b/testsuite/tests/driver/T20030/test3/N.hs-boot
new file mode 100644
index 0000000000..197e2eea70
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/N.hs-boot
@@ -0,0 +1 @@
+module N where
diff --git a/testsuite/tests/driver/T20030/test3/O.hs b/testsuite/tests/driver/T20030/test3/O.hs
new file mode 100644
index 0000000000..429e1ac50b
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/O.hs
@@ -0,0 +1,3 @@
+module O where
+import {-# SOURCE #-} L
+import {-# SOURCE #-} M
diff --git a/testsuite/tests/driver/T20030/test3/O.hs-boot b/testsuite/tests/driver/T20030/test3/O.hs-boot
new file mode 100644
index 0000000000..230b9e3014
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/O.hs-boot
@@ -0,0 +1 @@
+module O where
diff --git a/testsuite/tests/driver/T20030/test3/T20030_test3.stderr b/testsuite/tests/driver/T20030/test3/T20030_test3.stderr
new file mode 100644
index 0000000000..91c3869e70
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/T20030_test3.stderr
@@ -0,0 +1,7 @@
+[1 of 7] Compiling L[boot] ( L.hs-boot, L.o-boot )
+[2 of 7] Compiling M[boot] ( M.hs-boot, M.o-boot )
+[3 of 7] Compiling O[boot] ( O.hs-boot, O.o-boot )
+[4 of 7] Compiling O ( O.hs, O.o )
+[5 of 7] Compiling L ( L.hs, L.o )
+[6 of 7] Compiling M ( M.hs, M.o )
+[7 of 7] Compiling N ( N.hs, N.o )
diff --git a/testsuite/tests/driver/T20030/test3/all.T b/testsuite/tests/driver/T20030/test3/all.T
new file mode 100644
index 0000000000..7cbb410a3d
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test3/all.T
@@ -0,0 +1,4 @@
+test('T20030_test3',
+ [ extra_files([ 'L.hs', 'L.hs-boot', 'M.hs', 'M.hs-boot', 'N.hs', 'N.hs-boot', 'O.hs', 'O.hs-boot' ])
+ ],
+ multimod_compile, ['O.hs N.hs', '-v1'])
diff --git a/testsuite/tests/driver/T20030/test4/L1.hs b/testsuite/tests/driver/T20030/test4/L1.hs
new file mode 100644
index 0000000000..bbf0f06b62
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/L1.hs
@@ -0,0 +1,4 @@
+module L1 where
+
+import L1_1
+import L2_1
diff --git a/testsuite/tests/driver/T20030/test4/L1.hs-boot b/testsuite/tests/driver/T20030/test4/L1.hs-boot
new file mode 100644
index 0000000000..8a9eaee92d
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/L1.hs-boot
@@ -0,0 +1 @@
+module L1 where
diff --git a/testsuite/tests/driver/T20030/test4/L1_1.hs b/testsuite/tests/driver/T20030/test4/L1_1.hs
new file mode 100644
index 0000000000..ac31c988ee
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/L1_1.hs
@@ -0,0 +1,2 @@
+module L1_1 where
+import {-# SOURCE #-} L1
diff --git a/testsuite/tests/driver/T20030/test4/L2.hs b/testsuite/tests/driver/T20030/test4/L2.hs
new file mode 100644
index 0000000000..46ac69643a
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/L2.hs
@@ -0,0 +1,3 @@
+module L2 where
+import L2_1
+import M
diff --git a/testsuite/tests/driver/T20030/test4/L2.hs-boot b/testsuite/tests/driver/T20030/test4/L2.hs-boot
new file mode 100644
index 0000000000..160fae71ae
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/L2.hs-boot
@@ -0,0 +1 @@
+module L2 where
diff --git a/testsuite/tests/driver/T20030/test4/L2_1.hs b/testsuite/tests/driver/T20030/test4/L2_1.hs
new file mode 100644
index 0000000000..95875e7382
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/L2_1.hs
@@ -0,0 +1,2 @@
+module L2_1 where
+import {-# SOURCE #-} L2
diff --git a/testsuite/tests/driver/T20030/test4/M.hs b/testsuite/tests/driver/T20030/test4/M.hs
new file mode 100644
index 0000000000..480b67011a
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/M.hs
@@ -0,0 +1,3 @@
+module M where
+
+import L1_1
diff --git a/testsuite/tests/driver/T20030/test4/T20030_test4.stderr b/testsuite/tests/driver/T20030/test4/T20030_test4.stderr
new file mode 100644
index 0000000000..a477847202
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/T20030_test4.stderr
@@ -0,0 +1,10 @@
+[ 1 of 10] Compiling L2[boot] ( L2.hs-boot, L2.o-boot )
+[ 2 of 10] Compiling L2_1 ( L2_1.hs, L2_1.o )
+[ 3 of 10] Compiling L1[boot] ( L1.hs-boot, L1.o-boot )
+[ 4 of 10] Compiling L1_1 ( L1_1.hs, L1_1.o )
+[ 5 of 10] Compiling M ( M.hs, M.o )
+[ 6 of 10] Compiling L2 ( L2.hs, L2.o )
+[ 7 of 10] Compiling L1 ( L1.hs, L1.o )
+[ 8 of 10] Compiling UOL1 ( UOL1.hs, UOL1.o )
+[ 9 of 10] Compiling UOL1_2 ( UOL1_2.hs, UOL1_2.o )
+[10 of 10] Compiling UOL2 ( UOL2.hs, UOL2.o )
diff --git a/testsuite/tests/driver/T20030/test4/UOL1.hs b/testsuite/tests/driver/T20030/test4/UOL1.hs
new file mode 100644
index 0000000000..41ca42ef9a
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/UOL1.hs
@@ -0,0 +1,4 @@
+module UOL1 where
+
+import L1
+import M
diff --git a/testsuite/tests/driver/T20030/test4/UOL1_2.hs b/testsuite/tests/driver/T20030/test4/UOL1_2.hs
new file mode 100644
index 0000000000..246a9b76e0
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/UOL1_2.hs
@@ -0,0 +1,4 @@
+module UOL1_2 where
+
+import L1
+import L2
diff --git a/testsuite/tests/driver/T20030/test4/UOL2.hs b/testsuite/tests/driver/T20030/test4/UOL2.hs
new file mode 100644
index 0000000000..eb747ad8e8
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/UOL2.hs
@@ -0,0 +1,4 @@
+module UOL2 where
+
+import L2
+import M
diff --git a/testsuite/tests/driver/T20030/test4/all.T b/testsuite/tests/driver/T20030/test4/all.T
new file mode 100644
index 0000000000..96d83bbd94
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test4/all.T
@@ -0,0 +1,6 @@
+test('T20030_test4',
+ [ extra_files([ 'L1_1.hs', 'L1.hs', 'L1.hs-boot', 'L2_1.hs', 'L2.hs',
+ 'L2.hs-boot', 'M.hs', 'UOL1_2.hs', 'UOL1.hs', 'UOL2.hs' ])
+ ],
+ multimod_compile, ['UOL1_2.hs UOL1.hs UOL2.hs', '-v1'])
+
diff --git a/testsuite/tests/driver/T20030/test5/L1.hs b/testsuite/tests/driver/T20030/test5/L1.hs
new file mode 100644
index 0000000000..bbf0f06b62
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/L1.hs
@@ -0,0 +1,4 @@
+module L1 where
+
+import L1_1
+import L2_1
diff --git a/testsuite/tests/driver/T20030/test5/L1.hs-boot b/testsuite/tests/driver/T20030/test5/L1.hs-boot
new file mode 100644
index 0000000000..8a9eaee92d
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/L1.hs-boot
@@ -0,0 +1 @@
+module L1 where
diff --git a/testsuite/tests/driver/T20030/test5/L1_1.hs b/testsuite/tests/driver/T20030/test5/L1_1.hs
new file mode 100644
index 0000000000..ac31c988ee
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/L1_1.hs
@@ -0,0 +1,2 @@
+module L1_1 where
+import {-# SOURCE #-} L1
diff --git a/testsuite/tests/driver/T20030/test5/L2.hs b/testsuite/tests/driver/T20030/test5/L2.hs
new file mode 100644
index 0000000000..fc703e5c85
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/L2.hs
@@ -0,0 +1,3 @@
+module L2 where
+import L2_1
+import L1_1
diff --git a/testsuite/tests/driver/T20030/test5/L2.hs-boot b/testsuite/tests/driver/T20030/test5/L2.hs-boot
new file mode 100644
index 0000000000..160fae71ae
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/L2.hs-boot
@@ -0,0 +1 @@
+module L2 where
diff --git a/testsuite/tests/driver/T20030/test5/L2_1.hs b/testsuite/tests/driver/T20030/test5/L2_1.hs
new file mode 100644
index 0000000000..95875e7382
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/L2_1.hs
@@ -0,0 +1,2 @@
+module L2_1 where
+import {-# SOURCE #-} L2
diff --git a/testsuite/tests/driver/T20030/test5/T20030_test5.stderr b/testsuite/tests/driver/T20030/test5/T20030_test5.stderr
new file mode 100644
index 0000000000..89cdd8afb4
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/T20030_test5.stderr
@@ -0,0 +1,9 @@
+[1 of 9] Compiling L1[boot] ( L1.hs-boot, L1.o-boot )
+[2 of 9] Compiling L1_1 ( L1_1.hs, L1_1.o )
+[3 of 9] Compiling L2[boot] ( L2.hs-boot, L2.o-boot )
+[4 of 9] Compiling L2_1 ( L2_1.hs, L2_1.o )
+[5 of 9] Compiling L1 ( L1.hs, L1.o )
+[6 of 9] Compiling L2 ( L2.hs, L2.o )
+[7 of 9] Compiling UOL1 ( UOL1.hs, UOL1.o )
+[8 of 9] Compiling UOL1_2 ( UOL1_2.hs, UOL1_2.o )
+[9 of 9] Compiling UOL2 ( UOL2.hs, UOL2.o )
diff --git a/testsuite/tests/driver/T20030/test5/UOL1.hs b/testsuite/tests/driver/T20030/test5/UOL1.hs
new file mode 100644
index 0000000000..e9a1d9ccce
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/UOL1.hs
@@ -0,0 +1,3 @@
+module UOL1 where
+
+import L1
diff --git a/testsuite/tests/driver/T20030/test5/UOL1_2.hs b/testsuite/tests/driver/T20030/test5/UOL1_2.hs
new file mode 100644
index 0000000000..246a9b76e0
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/UOL1_2.hs
@@ -0,0 +1,4 @@
+module UOL1_2 where
+
+import L1
+import L2
diff --git a/testsuite/tests/driver/T20030/test5/UOL2.hs b/testsuite/tests/driver/T20030/test5/UOL2.hs
new file mode 100644
index 0000000000..139961ae50
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/UOL2.hs
@@ -0,0 +1,3 @@
+module UOL2 where
+
+import L2
diff --git a/testsuite/tests/driver/T20030/test5/all.T b/testsuite/tests/driver/T20030/test5/all.T
new file mode 100644
index 0000000000..98aa41366d
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test5/all.T
@@ -0,0 +1,6 @@
+test('T20030_test5',
+ [ extra_files([ 'L1_1.hs', 'L1.hs', 'L1.hs-boot', 'L2_1.hs', 'L2.hs',
+ 'L2.hs-boot', 'UOL1_2.hs', 'UOL1.hs', 'UOL2.hs' ])
+ ],
+ multimod_compile, ['UOL1_2.hs UOL1.hs UOL2.hs', '-v1'])
+
diff --git a/testsuite/tests/driver/T20030/test6/L1.hs b/testsuite/tests/driver/T20030/test6/L1.hs
new file mode 100644
index 0000000000..8fa4b8a839
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L1.hs
@@ -0,0 +1,3 @@
+module L1 where
+
+import L1_2
diff --git a/testsuite/tests/driver/T20030/test6/L1.hs-boot b/testsuite/tests/driver/T20030/test6/L1.hs-boot
new file mode 100644
index 0000000000..8a9eaee92d
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L1.hs-boot
@@ -0,0 +1 @@
+module L1 where
diff --git a/testsuite/tests/driver/T20030/test6/L1_1.hs b/testsuite/tests/driver/T20030/test6/L1_1.hs
new file mode 100644
index 0000000000..ac31c988ee
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L1_1.hs
@@ -0,0 +1,2 @@
+module L1_1 where
+import {-# SOURCE #-} L1
diff --git a/testsuite/tests/driver/T20030/test6/L1_2.hs b/testsuite/tests/driver/T20030/test6/L1_2.hs
new file mode 100644
index 0000000000..ed17d62900
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L1_2.hs
@@ -0,0 +1,3 @@
+module L1_2 where
+import L1_1
+import L2_1
diff --git a/testsuite/tests/driver/T20030/test6/L2.hs b/testsuite/tests/driver/T20030/test6/L2.hs
new file mode 100644
index 0000000000..49eae64d9b
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L2.hs
@@ -0,0 +1,2 @@
+module L2 where
+import L2_2
diff --git a/testsuite/tests/driver/T20030/test6/L2.hs-boot b/testsuite/tests/driver/T20030/test6/L2.hs-boot
new file mode 100644
index 0000000000..160fae71ae
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L2.hs-boot
@@ -0,0 +1 @@
+module L2 where
diff --git a/testsuite/tests/driver/T20030/test6/L2_1.hs b/testsuite/tests/driver/T20030/test6/L2_1.hs
new file mode 100644
index 0000000000..95875e7382
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L2_1.hs
@@ -0,0 +1,2 @@
+module L2_1 where
+import {-# SOURCE #-} L2
diff --git a/testsuite/tests/driver/T20030/test6/L2_2.hs b/testsuite/tests/driver/T20030/test6/L2_2.hs
new file mode 100644
index 0000000000..f88c5c3dee
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/L2_2.hs
@@ -0,0 +1,3 @@
+module L2_2 where
+import L2_1
+import L1_1
diff --git a/testsuite/tests/driver/T20030/test6/T20030_test6.stderr b/testsuite/tests/driver/T20030/test6/T20030_test6.stderr
new file mode 100644
index 0000000000..bb1f53dc67
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/T20030_test6.stderr
@@ -0,0 +1,12 @@
+[ 1 of 12] Compiling L1[boot] ( L1.hs-boot, L1.o-boot )
+[ 2 of 12] Compiling L1_1 ( L1_1.hs, L1_1.o )
+[ 3 of 12] Compiling L2[boot] ( L2.hs-boot, L2.o-boot )
+[ 4 of 12] Compiling L2_1 ( L2_1.hs, L2_1.o )
+[ 5 of 12] Compiling L2_2 ( L2_2.hs, L2_2.o )
+[ 6 of 12] Compiling L1_2 ( L1_2.hs, L1_2.o )
+[ 7 of 12] Compiling L1 ( L1.hs, L1.o )
+[ 8 of 12] Compiling L2 ( L2.hs, L2.o )
+[ 9 of 12] Compiling UOL1 ( UOL1.hs, UOL1.o )
+[10 of 12] Compiling UOL1_1 ( UOL1_1.hs, UOL1_1.o )
+[11 of 12] Compiling UOL1_2 ( UOL1_2.hs, UOL1_2.o )
+[12 of 12] Compiling UOL2 ( UOL2.hs, UOL2.o )
diff --git a/testsuite/tests/driver/T20030/test6/UOL1.hs b/testsuite/tests/driver/T20030/test6/UOL1.hs
new file mode 100644
index 0000000000..e9a1d9ccce
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/UOL1.hs
@@ -0,0 +1,3 @@
+module UOL1 where
+
+import L1
diff --git a/testsuite/tests/driver/T20030/test6/UOL1_1.hs b/testsuite/tests/driver/T20030/test6/UOL1_1.hs
new file mode 100644
index 0000000000..684b0f5e71
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/UOL1_1.hs
@@ -0,0 +1,3 @@
+module UOL1_1 where
+
+import L1_2
diff --git a/testsuite/tests/driver/T20030/test6/UOL1_2.hs b/testsuite/tests/driver/T20030/test6/UOL1_2.hs
new file mode 100644
index 0000000000..246a9b76e0
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/UOL1_2.hs
@@ -0,0 +1,4 @@
+module UOL1_2 where
+
+import L1
+import L2
diff --git a/testsuite/tests/driver/T20030/test6/UOL2.hs b/testsuite/tests/driver/T20030/test6/UOL2.hs
new file mode 100644
index 0000000000..139961ae50
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/UOL2.hs
@@ -0,0 +1,3 @@
+module UOL2 where
+
+import L2
diff --git a/testsuite/tests/driver/T20030/test6/all.T b/testsuite/tests/driver/T20030/test6/all.T
new file mode 100644
index 0000000000..a1df9d9b0a
--- /dev/null
+++ b/testsuite/tests/driver/T20030/test6/all.T
@@ -0,0 +1,6 @@
+test('T20030_test6',
+ [ extra_files([ 'L1_1.hs', 'L1_2.hs', 'L1.hs', 'L1.hs-boot', 'L2_1.hs', 'L2_2.hs', 'L2.hs',
+ 'L2.hs-boot', 'UOL1_2.hs', 'UOL1.hs', 'UOL1_1.hs', 'UOL2.hs' ])
+ ],
+ multimod_compile, ['UOL1_1.hs UOL1_2.hs UOL1.hs UOL2.hs', '-v1'])
+
diff --git a/testsuite/tests/driver/recomp-boot/recomp-boot.stdout b/testsuite/tests/driver/recomp-boot/recomp-boot.stdout
index 5c122e2e34..5aa4618bfc 100644
--- a/testsuite/tests/driver/recomp-boot/recomp-boot.stdout
+++ b/testsuite/tests/driver/recomp-boot/recomp-boot.stdout
@@ -2,5 +2,5 @@
[2 of 3] Compiling B ( B.hs, B.o )
[3 of 3] Compiling A ( A.hs, A.o )
[1 of 4] Compiling C[boot] ( C.hs-boot, C.o-boot )
-[3 of 4] Compiling B ( B.hs, B.o ) [Source file changed]
-[4 of 4] Compiling A ( A.hs, A.o ) [B changed]
+[2 of 4] Compiling B ( B.hs, B.o ) [Source file changed]
+[3 of 4] Compiling A ( A.hs, A.o ) [B changed]
diff --git a/testsuite/tests/driver/recomp-boot2/recomp-boot2.stdout b/testsuite/tests/driver/recomp-boot2/recomp-boot2.stdout
index cac737564c..0ad0041e30 100644
--- a/testsuite/tests/driver/recomp-boot2/recomp-boot2.stdout
+++ b/testsuite/tests/driver/recomp-boot2/recomp-boot2.stdout
@@ -4,7 +4,7 @@
[4 of 5] Compiling M ( M.hs, M.o )
[5 of 5] Compiling Top ( Top.hs, Top.o )
[1 of 6] Compiling C[boot] ( C.hs-boot, C.o-boot )
-[3 of 6] Compiling B ( B.hs, B.o ) [Source file changed]
-[4 of 6] Compiling A ( A.hs, A.o ) [B changed]
+[2 of 6] Compiling B ( B.hs, B.o ) [Source file changed]
+[3 of 6] Compiling A ( A.hs, A.o ) [B changed]
[5 of 6] Compiling M ( M.hs, M.o ) [A changed]
[6 of 6] Compiling Top ( Top.hs, Top.o ) [M changed]
diff --git a/testsuite/tests/ghci/prog018/prog018.stdout b/testsuite/tests/ghci/prog018/prog018.stdout
index 544ef8e671..23323ebb4b 100644
--- a/testsuite/tests/ghci/prog018/prog018.stdout
+++ b/testsuite/tests/ghci/prog018/prog018.stdout
@@ -1,6 +1,4 @@
[1 of 3] Compiling A ( A.hs, interpreted )
-[2 of 3] Compiling B ( B.hs, interpreted )
-[3 of 3] Compiling C ( C.hs, interpreted )
A.hs:5:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
@@ -9,11 +7,13 @@ A.hs:5:1: warning: [-Wincomplete-patterns (in -Wextra)]
A.hs:8:15: warning: [-Wunused-matches (in -Wextra)]
Defined but not used: ‘x’
+[2 of 3] Compiling B ( B.hs, interpreted )
B.hs:7:1: warning: [-Wunused-imports (in -Wextra)]
The import of ‘Data.Tuple’ is redundant
except perhaps to import instances from ‘Data.Tuple’
To import instances alone, use: import Data.Tuple()
+[3 of 3] Compiling C ( C.hs, interpreted )
C.hs:6:7: error: Variable not in scope: variableNotInScope :: ()
Failed, two modules loaded.
diff --git a/testsuite/tests/plugins/T11244.stderr b/testsuite/tests/plugins/T11244.stderr
index 72f01060db..65245b7f80 100644
--- a/testsuite/tests/plugins/T11244.stderr
+++ b/testsuite/tests/plugins/T11244.stderr
@@ -1,4 +1,6 @@
-<command line>: Could not load module ‘RuleDefiningPlugin’
+
+<no location info>: error:
+ Could not load module ‘RuleDefiningPlugin’
It is a member of the hidden package ‘rule-defining-plugin-0.1’.
You can run ‘:set -package rule-defining-plugin’ to expose it.
(Note: this unloads all the modules in the current scope.)