diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2021-07-15 17:16:49 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-08-18 17:57:42 -0400 |
commit | 5f0d2dab9be5b0f89d61e9957bb728538b162230 (patch) | |
tree | 46a725692e2cea227160a61266063cc4a5c2444a /testsuite/tests | |
parent | 0ba21dbe28882d506c3536c40224ebff337a9f49 (diff) | |
download | haskell-5f0d2dab9be5b0f89d61e9957bb728538b162230.tar.gz |
Driver rework pt3: the upsweep
This patch specifies and simplifies the module cycle compilation
in upsweep. How things work are described in the Note [Upsweep]
Note [Upsweep]
~~~~~~~~~~~~~~
Upsweep takes a 'ModuleGraph' as input, computes a build plan and then executes
the plan in order to compile the project.
The first step is computing the build plan from a 'ModuleGraph'.
The output of this step is a `[BuildPlan]`, which is a topologically sorted plan for
how to build all the modules.
```
data BuildPlan = SingleModule ModuleGraphNode -- A simple, single module all alone but *might* have an hs-boot file which isn't part of a cycle
| ResolvedCycle [ModuleGraphNode] -- A resolved cycle, linearised by hs-boot files
| UnresolvedCycle [ModuleGraphNode] -- An actual cycle, which wasn't resolved by hs-boot files
```
The plan is computed in two steps:
Step 1: Topologically sort the module graph without hs-boot files. This returns a [SCC ModuleGraphNode] which contains
cycles.
Step 2: For each cycle, topologically sort the modules in the cycle *with* the relevant hs-boot files. This should
result in an acyclic build plan if the hs-boot files are sufficient to resolve the cycle.
The `[BuildPlan]` is then interpreted by the `interpretBuildPlan` function.
* `SingleModule nodes` are compiled normally by either the upsweep_inst or upsweep_mod functions.
* `ResolvedCycles` need to compiled "together" so that the information which ends up in
the interface files at the end is accurate (and doesn't contain temporary information from
the hs-boot files.)
- During the initial compilation, a `KnotVars` is created which stores an IORef TypeEnv for
each module of the loop. These IORefs are gradually updated as the loop completes and provide
the required laziness to typecheck the module loop.
- At the end of typechecking, all the interface files are typechecked again in
the retypecheck loop. This time, the knot-tying is done by the normal laziness
based tying, so the environment is run without the KnotVars.
* UnresolvedCycles are indicative of a proper cycle, unresolved by hs-boot files
and are reported as an error to the user.
The main trickiness of `interpretBuildPlan` is deciding which version of a dependency
is visible from each module. For modules which are not in a cycle, there is just
one version of a module, so that is always used. For modules in a cycle, there are two versions of
'HomeModInfo'.
1. Internal to loop: The version created whilst compiling the loop by upsweep_mod.
2. External to loop: The knot-tied version created by typecheckLoop.
Whilst compiling a module inside the loop, we need to use the (1). For a module which
is outside of the loop which depends on something from in the loop, the (2) version
is used.
As the plan is interpreted, which version of a HomeModInfo is visible is updated
by updating a map held in a state monad. So after a loop has finished being compiled,
the visible module is the one created by typecheckLoop and the internal version is not
used again.
This plan also ensures the most important invariant to do with module loops:
> If you depend on anything within a module loop, before you can use the dependency,
the whole loop has to finish compiling.
The end result of `interpretBuildPlan` is a `[MakeAction]`, which are pairs
of `IO a` actions and a `MVar (Maybe a)`, somewhere to put the result of running
the action. This list is topologically sorted, so can be run in order to compute
the whole graph.
As well as this `interpretBuildPlan` also outputs an `IO [Maybe (Maybe HomeModInfo)]` which
can be queried at the end to get the result of all modules at the end, with their proper
visibility. For example, if any module in a loop fails then all modules in that loop will
report as failed because the visible node at the end will be the result of retypechecking
those modules together.
Along the way we also fix a number of other bugs in the driver:
* Unify upsweep and parUpsweep.
* Fix #19937 (static points, ghci and -j)
* Adds lots of module loop tests due to Divam.
Also related to #20030
Co-authored-by: Divam Narula <dfordivam@gmail.com>
-------------------------
Metric Decrease:
T10370
-------------------------
Diffstat (limited to 'testsuite/tests')
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.) |