diff options
author | Edward Z. Yang <ezyang@cs.stanford.edu> | 2015-07-24 15:13:49 -0700 |
---|---|---|
committer | Edward Z. Yang <ezyang@cs.stanford.edu> | 2015-09-21 11:53:56 -0700 |
commit | 06d46b1e4507e09eb2a7a04998a92610c8dc6277 (patch) | |
tree | 7dc84733d3b6a8313c272c2c8fed4cc0b5d30e90 /testsuite | |
parent | 09d214dcd8e831c128c684facb7c8da1d63c58bc (diff) | |
download | haskell-06d46b1e4507e09eb2a7a04998a92610c8dc6277.tar.gz |
Unify hsig and hs-boot; add preliminary "hs-boot" merging.
This patch drops the file level distinction between hs-boot and hsig;
we figure out which one we are compiling based on whether or not there
is a corresponding hs file lying around.
To make the "import A" syntax continue to work for bare hs-boot
files, we also introduce hs-boot merging, which takes an A.hi-boot
and converts it to an A.hi when there is no A.hs file in scope.
This will be generalized in Backpack to merge multiple A.hi files together;
which means we can jettison the "load multiple interface files" functionality.
This works automatically for --make, but for one-shot compilation
we need a new mode: ghc --merge-requirements A will generate an A.hi/A.o
from a local A.hi-boot file; Backpack will extend this mechanism further.
Has Haddock submodule update to deal with change in msHsFilePath behavior.
- This commit drops support for the hsig extension. Can
we support it? It's annoying because the finder code is
written with the assumption that where there's an hs-boot
file, there's always an hs file too. To support hsig, you'd
have to probe two locations. Easier to just not support it.
- #10333 affects us, modifying an hs-boot still doesn't trigger
recomp.
- See compiler/main/Finder.hs: this diff is very skeevy, but
it seems to work.
- This code cunningly doesn't drop hs-boot files from the
"drop hs-boot files" module graph, if they don't have a
corresponding hs file. I have no idea if this actually is useful.
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate
Reviewers: simonpj, austin, bgamari, spinda
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1098
Diffstat (limited to 'testsuite')
39 files changed, 142 insertions, 47 deletions
diff --git a/testsuite/.gitignore b/testsuite/.gitignore index 14704f7f58..88c89deb64 100644 --- a/testsuite/.gitignore +++ b/testsuite/.gitignore @@ -613,6 +613,7 @@ mk/ghcconfig*_bin_ghc*.exe.mk /tests/driver/recomp014/A.hs /tests/driver/recomp014/A1.hs /tests/driver/recomp014/B.hsig +/tests/driver/recomp014/B.hs-boot /tests/driver/recomp014/C.hs /tests/driver/recomp014/recomp014 /tests/driver/rtsOpts diff --git a/testsuite/tests/driver/dynamicToo/dynamicToo005/A005.hsig b/testsuite/tests/driver/dynamicToo/dynamicToo005/A005.hs-boot index 75d621cfec..75d621cfec 100644 --- a/testsuite/tests/driver/dynamicToo/dynamicToo005/A005.hsig +++ b/testsuite/tests/driver/dynamicToo/dynamicToo005/A005.hs-boot diff --git a/testsuite/tests/driver/dynamicToo/dynamicToo005/Makefile b/testsuite/tests/driver/dynamicToo/dynamicToo005/Makefile index 617510eec4..a08827a92d 100644 --- a/testsuite/tests/driver/dynamicToo/dynamicToo005/Makefile +++ b/testsuite/tests/driver/dynamicToo/dynamicToo005/Makefile @@ -5,11 +5,15 @@ include $(TOP)/mk/test.mk checkExists = [ -f $1 ] || echo $1 missing .PHONY: dynamicToo005 -# Check that "-c -dynamic-too" works with .hsig +# Check that "-c -dynamic-too" works with signatures dynamicToo005: "$(TEST_HC)" $(TEST_HC_OPTS) -dynamic-too -v0 \ -sig-of A005=base:Prelude \ - -c A005.hsig + -c A005.hs-boot + $(call checkExists,A005.o-boot) + $(call checkExists,A005.hi-boot) + "$(TEST_HC)" $(TEST_HC_OPTS) -dynamic-too -v0 \ + --merge-requirements A005 $(call checkExists,A005.o) $(call checkExists,A005.hi) $(call checkExists,A005.dyn_o) diff --git a/testsuite/tests/driver/dynamicToo/dynamicToo006/A.hsig b/testsuite/tests/driver/dynamicToo/dynamicToo006/A.hs-boot index f79d5d334f..f79d5d334f 100644 --- a/testsuite/tests/driver/dynamicToo/dynamicToo006/A.hsig +++ b/testsuite/tests/driver/dynamicToo/dynamicToo006/A.hs-boot diff --git a/testsuite/tests/driver/dynamicToo/dynamicToo006/Makefile b/testsuite/tests/driver/dynamicToo/dynamicToo006/Makefile index 497f2c0942..6e025f8322 100644 --- a/testsuite/tests/driver/dynamicToo/dynamicToo006/Makefile +++ b/testsuite/tests/driver/dynamicToo/dynamicToo006/Makefile @@ -11,8 +11,10 @@ dynamicToo006: -sig-of A=base:Prelude \ --make B $(call checkExists,A.o) + $(call checkExists,A.o-boot) $(call checkExists,B.o) $(call checkExists,A.hi) + $(call checkExists,A.hi-boot) $(call checkExists,B.hi) $(call checkExists,A.dyn_o) $(call checkExists,B.dyn_o) diff --git a/testsuite/tests/driver/recomp014/Makefile b/testsuite/tests/driver/recomp014/Makefile new file mode 100644 index 0000000000..00b2035206 --- /dev/null +++ b/testsuite/tests/driver/recomp014/Makefile @@ -0,0 +1,33 @@ +TOP=../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk + +# -fforce-recomp makes lots of driver tests trivially pass, so we +# filter it out from $(TEST_HC_OPTS). +TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS)) + +# Recompilation tests + +clean: + rm -f *.o *.hi + +recomp014: clean + echo 'module A where a = False' > A.hs + echo 'module A1 where a = False' > A1.hs + echo 'module B where a :: Bool' > B.hs-boot + echo 'first run' + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c A.hs + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c A1.hs + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c B.hs-boot -sig-of "B is main:A" + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --merge-requirements B + echo 'import B; main = print a' > C.hs + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c C.hs + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c C.hs + echo 'second run' + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c B.hs-boot -sig-of "B is main:A1" + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --merge-requirements B + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c C.hs + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) A1.o C.o -o recomp014 + ./recomp014 + +.PHONY: clean recomp014 diff --git a/testsuite/tests/driver/recomp014/all.T b/testsuite/tests/driver/recomp014/all.T new file mode 100644 index 0000000000..affccd2f7f --- /dev/null +++ b/testsuite/tests/driver/recomp014/all.T @@ -0,0 +1,4 @@ +test('recomp014', + [ clean_cmd('$MAKE -s clean') ], + run_command, + ['$MAKE -s --no-print-directory recomp014']) diff --git a/testsuite/tests/driver/recomp014/recomp014.stdout b/testsuite/tests/driver/recomp014/recomp014.stdout new file mode 100644 index 0000000000..7d540716f0 --- /dev/null +++ b/testsuite/tests/driver/recomp014/recomp014.stdout @@ -0,0 +1,4 @@ +first run +compilation IS NOT required +second run +False diff --git a/testsuite/tests/driver/sigof01/B.hsig b/testsuite/tests/driver/sigof01/B.hs-boot index 289d3bcb18..289d3bcb18 100644 --- a/testsuite/tests/driver/sigof01/B.hsig +++ b/testsuite/tests/driver/sigof01/B.hs-boot diff --git a/testsuite/tests/driver/sigof01/Makefile b/testsuite/tests/driver/sigof01/Makefile index 84dfc33a9f..8bed672c07 100644 --- a/testsuite/tests/driver/sigof01/Makefile +++ b/testsuite/tests/driver/sigof01/Makefile @@ -11,7 +11,8 @@ sigof01: rm -rf tmp_sigof01 mkdir tmp_sigof01 '$(TEST_HC)' $(S01_OPTS) -c A.hs - '$(TEST_HC)' $(S01_OPTS) -c B.hsig -sig-of "B is main:A" + '$(TEST_HC)' $(S01_OPTS) -c B.hs-boot -sig-of "B is main:A" + '$(TEST_HC)' $(S01_OPTS) --merge-requirements B '$(TEST_HC)' $(S01_OPTS) -c Main.hs '$(TEST_HC)' $(S01_OPTS) tmp_sigof01/A.o tmp_sigof01/Main.o -o tmp_sigof01/Main tmp_sigof01/Main @@ -21,3 +22,9 @@ sigof01m: mkdir tmp_sigof01m '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -outputdir tmp_sigof01m --make Main.hs -sig-of "B is main:A" -o tmp_sigof01m/Main tmp_sigof01m/Main + +sigof01i: + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --interactive -v0 -ignore-dot-ghci Main.hs -sig-of "B is main:A" < sigof01i.script + +sigof01i2: + '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --interactive -v0 -ignore-dot-ghci -sig-of "B is main:A" < sigof01i2.script diff --git a/testsuite/tests/driver/sigof01/all.T b/testsuite/tests/driver/sigof01/all.T index d0cdc3c02c..5606127f06 100644 --- a/testsuite/tests/driver/sigof01/all.T +++ b/testsuite/tests/driver/sigof01/all.T @@ -7,3 +7,13 @@ test('sigof01m', [ clean_cmd('rm -rf tmp_sigof01m') ], run_command, ['$MAKE -s --no-print-directory sigof01m']) + +test('sigof01i', + [], + run_command, + ['$MAKE -s --no-print-directory sigof01i']) + +test('sigof01i2', + [], + run_command, + ['$MAKE -s --no-print-directory sigof01i2']) diff --git a/testsuite/tests/driver/sigof01/sigof01i.script b/testsuite/tests/driver/sigof01/sigof01i.script new file mode 100644 index 0000000000..ba2906d066 --- /dev/null +++ b/testsuite/tests/driver/sigof01/sigof01i.script @@ -0,0 +1 @@ +main diff --git a/testsuite/tests/driver/sigof01/sigof01i.stdout b/testsuite/tests/driver/sigof01/sigof01i.stdout new file mode 100644 index 0000000000..bb614cd2a0 --- /dev/null +++ b/testsuite/tests/driver/sigof01/sigof01i.stdout @@ -0,0 +1,3 @@ +False +T +True diff --git a/testsuite/tests/driver/sigof01/sigof01i2.script b/testsuite/tests/driver/sigof01/sigof01i2.script new file mode 100644 index 0000000000..3a91e377a3 --- /dev/null +++ b/testsuite/tests/driver/sigof01/sigof01i2.script @@ -0,0 +1,3 @@ +:load B +:browse B +:issafe diff --git a/testsuite/tests/driver/sigof01/sigof01i2.stdout b/testsuite/tests/driver/sigof01/sigof01i2.stdout new file mode 100644 index 0000000000..1ee81c10d2 --- /dev/null +++ b/testsuite/tests/driver/sigof01/sigof01i2.stdout @@ -0,0 +1,9 @@ +class Foo a where + foo :: a -> a + {-# MINIMAL foo #-} +data T = A.T +mkT :: T +x :: Bool +Trust type is (Module: Safe, Package: trusted) +Package Trust: Off +B is trusted! diff --git a/testsuite/tests/driver/sigof01/sigof01m.stdout b/testsuite/tests/driver/sigof01/sigof01m.stdout index a7fdd8298e..35190ae143 100644 --- a/testsuite/tests/driver/sigof01/sigof01m.stdout +++ b/testsuite/tests/driver/sigof01/sigof01m.stdout @@ -1,6 +1,7 @@ -[1 of 3] Compiling A ( A.hs, tmp_sigof01m/A.o ) -[2 of 3] Compiling B[sig of A] ( B.hsig, nothing ) -[3 of 3] Compiling Main ( Main.hs, tmp_sigof01m/Main.o ) +[1 of 4] Compiling A ( A.hs, tmp_sigof01m/A.o ) +[2 of 4] Compiling B[boot] ( B.hs-boot, tmp_sigof01m/B.o-boot ) +[3 of 4] Compiling B[merge] ( B.hi, tmp_sigof01m/B.o ) +[4 of 4] Compiling Main ( Main.hs, tmp_sigof01m/Main.o ) Linking tmp_sigof01m/Main ... False T diff --git a/testsuite/tests/driver/sigof02/Makefile b/testsuite/tests/driver/sigof02/Makefile index 8f153f44ce..aebff03151 100644 --- a/testsuite/tests/driver/sigof02/Makefile +++ b/testsuite/tests/driver/sigof02/Makefile @@ -11,11 +11,13 @@ sigof02: rm -rf tmp_sigof02 mkdir tmp_sigof02 '$(GHC_PKG)' field containers key | sed 's/^.*: *//' > tmp_sigof02/containers - '$(TEST_HC)' $(S02_OPTS) -c Map.hsig -sig-of "Map is `cat tmp_sigof02/containers`:Data.Map.Strict" + '$(TEST_HC)' $(S02_OPTS) -c Map.hs-boot -sig-of "Map is `cat tmp_sigof02/containers`:Data.Map.Strict" + '$(TEST_HC)' $(S02_OPTS) --merge-requirements Map '$(TEST_HC)' $(S02_OPTS) -c Main.hs '$(TEST_HC)' $(S02_OPTS) -package containers tmp_sigof02/Main.o -o tmp_sigof02/StrictMain ! ./tmp_sigof02/StrictMain - '$(TEST_HC)' $(S02_OPTS) -c Map.hsig -sig-of "Map is `cat tmp_sigof02/containers`:Data.Map.Lazy" + '$(TEST_HC)' $(S02_OPTS) -c Map.hs-boot -sig-of "Map is `cat tmp_sigof02/containers`:Data.Map.Lazy" + '$(TEST_HC)' $(S02_OPTS) --merge-requirements Map '$(TEST_HC)' $(S02_OPTS) -c Main.hs '$(TEST_HC)' $(S02_OPTS) -package containers tmp_sigof02/Main.o -o tmp_sigof02/LazyMain ./tmp_sigof02/LazyMain @@ -24,7 +26,8 @@ S02T_OPTS=$(TEST_HC_OPTS_NO_RECOMP) -fno-code -fwrite-interface -outputdir tmp_s sigof02t: rm -rf tmp_sigof02t mkdir tmp_sigof02t - '$(TEST_HC)' $(S02T_OPTS) -c Map.hsig + '$(TEST_HC)' $(S02T_OPTS) -c Map.hs-boot + '$(TEST_HC)' $(S02T_OPTS) --merge-requirements Map '$(TEST_HC)' $(S02T_OPTS) -c Main.hs S02M_OPTS=$(TEST_HC_OPTS_NO_RECOMP) -outputdir tmp_sigof02m @@ -47,8 +50,10 @@ sigof02d: rm -rf tmp_sigof02d mkdir tmp_sigof02d '$(GHC_PKG)' field containers key | sed 's/^.*: *//' > tmp_sigof02d/containers - '$(TEST_HC)' $(S02D_OPTS) -c Map.hsig -sig-of "Map is `cat tmp_sigof02d/containers`:Data.Map.Lazy, MapAsSet is `cat tmp_sigof02d/containers`:Data.Map.Lazy" - '$(TEST_HC)' $(S02D_OPTS) -c MapAsSet.hsig -sig-of "Map is `cat tmp_sigof02d/containers`:Data.Map.Lazy, MapAsSet is `cat tmp_sigof02d/containers`:Data.Map.Lazy" + '$(TEST_HC)' $(S02D_OPTS) -c Map.hs-boot -sig-of "Map is `cat tmp_sigof02d/containers`:Data.Map.Lazy, MapAsSet is `cat tmp_sigof02d/containers`:Data.Map.Lazy" + '$(TEST_HC)' $(S02D_OPTS) --merge-requirements Map + '$(TEST_HC)' $(S02D_OPTS) -c MapAsSet.hs-boot -sig-of "Map is `cat tmp_sigof02d/containers`:Data.Map.Lazy, MapAsSet is `cat tmp_sigof02d/containers`:Data.Map.Lazy" + '$(TEST_HC)' $(S02D_OPTS) --merge-requirements MapAsSet '$(TEST_HC)' $(S02D_OPTS) -c Double.hs '$(TEST_HC)' $(S02D_OPTS) -package containers tmp_sigof02d/Main.o -o tmp_sigof02d/Double ./tmp_sigof02d/Double @@ -57,8 +62,10 @@ S02DT_OPTS=$(TEST_HC_OPTS_NO_RECOMP) -outputdir tmp_sigof02dt -i -itmp_sigof02dt sigof02dt: rm -rf tmp_sigof02dt mkdir tmp_sigof02dt - '$(TEST_HC)' $(S02DT_OPTS) -c Map.hsig - '$(TEST_HC)' $(S02DT_OPTS) -c MapAsSet.hsig + '$(TEST_HC)' $(S02DT_OPTS) -c Map.hs-boot + '$(TEST_HC)' $(S02DT_OPTS) --merge-requirements Map + '$(TEST_HC)' $(S02DT_OPTS) -c MapAsSet.hs-boot + '$(TEST_HC)' $(S02DT_OPTS) --merge-requirements MapAsSet ! '$(TEST_HC)' $(S02DT_OPTS) -c Double.hs sigof02dm: diff --git a/testsuite/tests/driver/sigof02/Map.hsig b/testsuite/tests/driver/sigof02/Map.hs-boot index cd094df17f..cd094df17f 100644 --- a/testsuite/tests/driver/sigof02/Map.hsig +++ b/testsuite/tests/driver/sigof02/Map.hs-boot diff --git a/testsuite/tests/driver/sigof02/MapAsSet.hsig b/testsuite/tests/driver/sigof02/MapAsSet.hs-boot index 1defbc7717..1defbc7717 100644 --- a/testsuite/tests/driver/sigof02/MapAsSet.hsig +++ b/testsuite/tests/driver/sigof02/MapAsSet.hs-boot diff --git a/testsuite/tests/driver/sigof02/sigof02dm.stdout b/testsuite/tests/driver/sigof02/sigof02dm.stdout index 14ee83789b..a3a5fa8b4b 100644 --- a/testsuite/tests/driver/sigof02/sigof02dm.stdout +++ b/testsuite/tests/driver/sigof02/sigof02dm.stdout @@ -1,6 +1,8 @@ -[1 of 3] Compiling MapAsSet[sig of Data.Map.Lazy] ( MapAsSet.hsig, nothing ) -[2 of 3] Compiling Map[sig of Data.Map.Lazy] ( Map.hsig, nothing ) -[3 of 3] Compiling Main ( Double.hs, tmp_sigof02dm/Main.o ) +[1 of 5] Compiling MapAsSet[boot] ( MapAsSet.hs-boot, tmp_sigof02dm/MapAsSet.o-boot ) +[2 of 5] Compiling MapAsSet[merge] ( MapAsSet.hi, tmp_sigof02dm/MapAsSet.o ) +[3 of 5] Compiling Map[boot] ( Map.hs-boot, tmp_sigof02dm/Map.o-boot ) +[4 of 5] Compiling Map[merge] ( Map.hi, tmp_sigof02dm/Map.o ) +[5 of 5] Compiling Main ( Double.hs, tmp_sigof02dm/Main.o ) Linking tmp_sigof02dm/Double ... False fromList [0,6] diff --git a/testsuite/tests/driver/sigof02/sigof02m.stdout b/testsuite/tests/driver/sigof02/sigof02m.stdout index 41cc4a7bb3..4c80fed188 100644 --- a/testsuite/tests/driver/sigof02/sigof02m.stdout +++ b/testsuite/tests/driver/sigof02/sigof02m.stdout @@ -1,8 +1,10 @@ -[1 of 2] Compiling Map[sig of Data.Map.Strict] ( Map.hsig, nothing ) -[2 of 2] Compiling Main ( Main.hs, tmp_sigof02m/Main.o ) +[1 of 3] Compiling Map[boot] ( Map.hs-boot, tmp_sigof02m/Map.o-boot ) +[2 of 3] Compiling Map[merge] ( Map.hi, tmp_sigof02m/Map.o ) +[3 of 3] Compiling Main ( Main.hs, tmp_sigof02m/Main.o ) Linking tmp_sigof02m/StrictMain ... -[1 of 2] Compiling Map[sig of Data.Map.Lazy] ( Map.hsig, nothing ) [sig-of changed] -[2 of 2] Compiling Main ( Main.hs, tmp_sigof02m/Main.o ) [Map changed] +[1 of 3] Compiling Map[boot] ( Map.hs-boot, tmp_sigof02m/Map.o-boot ) [sig-of changed] +[2 of 3] Compiling Map[merge] ( Map.hi, tmp_sigof02m/Map.o ) [sig-of changed] +[3 of 3] Compiling Main ( Main.hs, tmp_sigof02m/Main.o ) [Map changed] Linking tmp_sigof02m/LazyMain ... False [(0,"foo"),(6,"foo")] diff --git a/testsuite/tests/driver/sigof03/ASig1.hsig b/testsuite/tests/driver/sigof03/ASig1.hs-boot index 9428e0cf04..9428e0cf04 100644 --- a/testsuite/tests/driver/sigof03/ASig1.hsig +++ b/testsuite/tests/driver/sigof03/ASig1.hs-boot diff --git a/testsuite/tests/driver/sigof03/ASig2.hsig b/testsuite/tests/driver/sigof03/ASig2.hs-boot index 6f278b0a89..6f278b0a89 100644 --- a/testsuite/tests/driver/sigof03/ASig2.hsig +++ b/testsuite/tests/driver/sigof03/ASig2.hs-boot diff --git a/testsuite/tests/driver/sigof03/Makefile b/testsuite/tests/driver/sigof03/Makefile index 03a0b9b2da..f39d16ea60 100644 --- a/testsuite/tests/driver/sigof03/Makefile +++ b/testsuite/tests/driver/sigof03/Makefile @@ -11,8 +11,9 @@ sigof03: rm -rf tmp_sigof03 mkdir tmp_sigof03 '$(TEST_HC)' $(S03_OPTS) -c A.hs - '$(TEST_HC)' $(S03_OPTS) -c ASig1.hsig -sig-of "ASig1 is main:A, ASig2 is main:A" - '$(TEST_HC)' $(S03_OPTS) -c ASig2.hsig -sig-of "ASig1 is main:A, ASig2 is main:A" + '$(TEST_HC)' $(S03_OPTS) -c ASig1.hs-boot -sig-of "ASig1 is main:A, ASig2 is main:A" + '$(TEST_HC)' $(S03_OPTS) -c ASig2.hs-boot -sig-of "ASig1 is main:A, ASig2 is main:A" + '$(TEST_HC)' $(S03_OPTS) --merge-requirements ASig1 ASig2 '$(TEST_HC)' $(S03_OPTS) -c Main.hs '$(TEST_HC)' $(S03_OPTS) tmp_sigof03/A.o tmp_sigof03/Main.o -o tmp_sigof03/Main ./tmp_sigof03/Main diff --git a/testsuite/tests/driver/sigof04/Makefile b/testsuite/tests/driver/sigof04/Makefile index f013b0c202..b489174410 100644 --- a/testsuite/tests/driver/sigof04/Makefile +++ b/testsuite/tests/driver/sigof04/Makefile @@ -11,4 +11,4 @@ clean: sigof04: '$(GHC_PKG)' field containers key | sed 's/^.*: *//' > containers - ! '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c Sig.hsig -sig-of "Sig is `cat containers`:Data.Map.Strict" + ! '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c Sig.hs-boot -sig-of "Sig is `cat containers`:Data.Map.Strict" diff --git a/testsuite/tests/driver/sigof04/Sig.hsig b/testsuite/tests/driver/sigof04/Sig.hs-boot index 3110f28fff..3110f28fff 100644 --- a/testsuite/tests/driver/sigof04/Sig.hsig +++ b/testsuite/tests/driver/sigof04/Sig.hs-boot diff --git a/testsuite/tests/driver/sigof04/sigof04.stderr b/testsuite/tests/driver/sigof04/sigof04.stderr index 4be1bfd3e5..2c2e0c39fc 100644 --- a/testsuite/tests/driver/sigof04/sigof04.stderr +++ b/testsuite/tests/driver/sigof04/sigof04.stderr @@ -1,3 +1,3 @@ -
-<no location info>:
- ‘insert’ is exported by the hsig file, but not exported by the module
+ +<no location info>: error: + ‘insert’ is exported by the signature file, but not exported by the module diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T index da71c1d742..8f6aeae9b5 100644 --- a/testsuite/tests/typecheck/should_compile/all.T +++ b/testsuite/tests/typecheck/should_compile/all.T @@ -357,7 +357,7 @@ test('tc262', normal, compile, ['']) test('tc263', extra_clean(['Tc263_Help.o','Tc263_Help.hi']), multimod_compile, ['tc263','-v0']) -test('tc264', normal, multimod_compile, ['tc264.hsig', '-sig-of "ShouldCompile is base:Data.STRef"']) +test('tc264', normal, multimod_compile, ['tc264.hs-boot', '-sig-of "ShouldCompile is base:Data.STRef"']) test('tc265', compile_timeout_multiplier(0.01), compile, ['']) test('GivenOverlapping', normal, compile, ['']) diff --git a/testsuite/tests/typecheck/should_compile/tc264.hsig b/testsuite/tests/typecheck/should_compile/tc264.hs-boot index 0bfdb2b9f4..0bfdb2b9f4 100644 --- a/testsuite/tests/typecheck/should_compile/tc264.hsig +++ b/testsuite/tests/typecheck/should_compile/tc264.hs-boot diff --git a/testsuite/tests/typecheck/should_compile/tc264.stderr b/testsuite/tests/typecheck/should_compile/tc264.stderr index 4eb1124cad..e3d0e175f8 100644 --- a/testsuite/tests/typecheck/should_compile/tc264.stderr +++ b/testsuite/tests/typecheck/should_compile/tc264.stderr @@ -1 +1 @@ -[1 of 1] Compiling ShouldCompile[sig of Data.STRef] ( tc264.hsig, nothing ) +[1 of 1] Compiling ShouldCompile[boot] ( tc264.hs-boot, tc264.o ) diff --git a/testsuite/tests/typecheck/should_fail/all.T b/testsuite/tests/typecheck/should_fail/all.T index a005bc5f29..1b0273bb2f 100644 --- a/testsuite/tests/typecheck/should_fail/all.T +++ b/testsuite/tests/typecheck/should_fail/all.T @@ -242,10 +242,10 @@ test('tcfail215', normal, compile_fail, ['']) test('tcfail216', normal, compile_fail, ['']) test('tcfail217', normal, compile_fail, ['']) test('tcfail218', normal, compile_fail, ['']) -test('tcfail219', normal, multimod_compile_fail, ['tcfail219.hsig', '-sig-of "ShouldFail is base:Data.Bool"']) -test('tcfail220', normal, multimod_compile_fail, ['tcfail220.hsig', '-sig-of "ShouldFail is base:Prelude"']) -test('tcfail221', normal, multimod_compile_fail, ['tcfail221.hsig', '-sig-of "ShouldFail is base:Prelude"']) -test('tcfail222', normal, multimod_compile_fail, ['tcfail222.hsig', '-sig-of "ShouldFail is base:Data.STRef"']) +test('tcfail219', normal, multimod_compile_fail, ['tcfail219.hs-boot', '-sig-of "ShouldFail is base:Data.Bool"']) +test('tcfail220', normal, multimod_compile_fail, ['tcfail220.hs-boot', '-sig-of "ShouldFail is base:Prelude"']) +test('tcfail221', normal, multimod_compile_fail, ['tcfail221.hs-boot', '-sig-of "ShouldFail is base:Prelude"']) +test('tcfail222', normal, multimod_compile_fail, ['tcfail222.hs-boot', '-sig-of "ShouldFail is base:Data.STRef"']) test('tcfail223', normal, compile_fail, ['']) test('SilentParametersOverlapping', normal, compile, ['']) diff --git a/testsuite/tests/typecheck/should_fail/tcfail219.hsig b/testsuite/tests/typecheck/should_fail/tcfail219.hs-boot index ec6d6076ab..ec6d6076ab 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail219.hsig +++ b/testsuite/tests/typecheck/should_fail/tcfail219.hs-boot diff --git a/testsuite/tests/typecheck/should_fail/tcfail219.stderr b/testsuite/tests/typecheck/should_fail/tcfail219.stderr index 53a7edebe0..d364137c08 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail219.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail219.stderr @@ -1,3 +1,4 @@ -[1 of 1] Compiling ShouldFail[sig of Data.Bool] ( tcfail219.hsig, nothing ) +[1 of 1] Compiling ShouldFail[boot] ( tcfail219.hs-boot, tcfail219.o ) -tcfail219.hsig:1:1: Not in scope: type constructor or class ‘Booly’ +tcfail219.hs-boot:1:1: error: + Not in scope: type constructor or class ‘Booly’ diff --git a/testsuite/tests/typecheck/should_fail/tcfail220.hsig b/testsuite/tests/typecheck/should_fail/tcfail220.hs-boot index c9e80e3da2..c9e80e3da2 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail220.hsig +++ b/testsuite/tests/typecheck/should_fail/tcfail220.hs-boot diff --git a/testsuite/tests/typecheck/should_fail/tcfail220.stderr b/testsuite/tests/typecheck/should_fail/tcfail220.stderr index d78fa6d83e..e8d3c810ff 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail220.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail220.stderr @@ -1,9 +1,9 @@ -[1 of 1] Compiling ShouldFail[sig of Prelude] ( tcfail220.hsig, nothing ) +[1 of 1] Compiling ShouldFail[boot] ( tcfail220.hs-boot, tcfail220.o ) -tcfail220.hsig:4:1: error: +tcfail220.hs-boot:4:1: error: Type constructor ‘Either’ has conflicting definitions in the module - and its hsig file + and its signature file Main module: data Either a b = Left a | Right b - Hsig file: type role Either representational phantom phantom - data Either a b c = Left a + Signature file: type role Either representational phantom phantom + data Either a b c = Left a The types have different kinds diff --git a/testsuite/tests/typecheck/should_fail/tcfail221.hsig b/testsuite/tests/typecheck/should_fail/tcfail221.hs-boot index a60c1a0d80..a60c1a0d80 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail221.hsig +++ b/testsuite/tests/typecheck/should_fail/tcfail221.hs-boot diff --git a/testsuite/tests/typecheck/should_fail/tcfail221.stderr b/testsuite/tests/typecheck/should_fail/tcfail221.stderr index 8781bd056e..aef6c81a79 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail221.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail221.stderr @@ -1,6 +1,6 @@ -[1 of 1] Compiling ShouldFail[sig of Prelude] ( tcfail221.hsig, nothing ) +[1 of 1] Compiling ShouldFail[boot] ( tcfail221.hs-boot, tcfail221.o ) -tcfail221.hsig:2:10: +tcfail221.hs-boot:2:10: error: Duplicate instance declarations: - instance Show Int -- Defined at tcfail221.hsig:2:10 - instance Show Int -- Defined at tcfail221.hsig:3:10 + instance Show Int -- Defined at tcfail221.hs-boot:2:10 + instance Show Int -- Defined at tcfail221.hs-boot:3:10 diff --git a/testsuite/tests/typecheck/should_fail/tcfail222.hsig b/testsuite/tests/typecheck/should_fail/tcfail222.hs-boot index e83f4e3b83..e83f4e3b83 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail222.hsig +++ b/testsuite/tests/typecheck/should_fail/tcfail222.hs-boot diff --git a/testsuite/tests/typecheck/should_fail/tcfail222.stderr b/testsuite/tests/typecheck/should_fail/tcfail222.stderr index 1293b787a0..3f1466fede 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail222.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail222.stderr @@ -1,4 +1,4 @@ -[1 of 1] Compiling ShouldFail[sig of Data.STRef] ( tcfail222.hsig, nothing )
-
-<no location info>:
- ‘newSTRef’ is exported by the hsig file, but not exported by the module
+[1 of 1] Compiling ShouldFail[boot] ( tcfail222.hs-boot, tcfail222.o ) + +<no location info>: error: + ‘newSTRef’ is exported by the signature file, but not exported by the module |