summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorEdward Z. Yang <ezyang@cs.stanford.edu>2015-07-24 15:13:49 -0700
committerEdward Z. Yang <ezyang@cs.stanford.edu>2015-09-21 11:53:56 -0700
commit06d46b1e4507e09eb2a7a04998a92610c8dc6277 (patch)
tree7dc84733d3b6a8313c272c2c8fed4cc0b5d30e90 /testsuite
parent09d214dcd8e831c128c684facb7c8da1d63c58bc (diff)
downloadhaskell-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')
-rw-r--r--testsuite/.gitignore1
-rw-r--r--testsuite/tests/driver/dynamicToo/dynamicToo005/A005.hs-boot (renamed from testsuite/tests/driver/dynamicToo/dynamicToo005/A005.hsig)0
-rw-r--r--testsuite/tests/driver/dynamicToo/dynamicToo005/Makefile8
-rw-r--r--testsuite/tests/driver/dynamicToo/dynamicToo006/A.hs-boot (renamed from testsuite/tests/driver/dynamicToo/dynamicToo006/A.hsig)0
-rw-r--r--testsuite/tests/driver/dynamicToo/dynamicToo006/Makefile2
-rw-r--r--testsuite/tests/driver/recomp014/Makefile33
-rw-r--r--testsuite/tests/driver/recomp014/all.T4
-rw-r--r--testsuite/tests/driver/recomp014/recomp014.stdout4
-rw-r--r--testsuite/tests/driver/sigof01/B.hs-boot (renamed from testsuite/tests/driver/sigof01/B.hsig)0
-rw-r--r--testsuite/tests/driver/sigof01/Makefile9
-rw-r--r--testsuite/tests/driver/sigof01/all.T10
-rw-r--r--testsuite/tests/driver/sigof01/sigof01i.script1
-rw-r--r--testsuite/tests/driver/sigof01/sigof01i.stdout3
-rw-r--r--testsuite/tests/driver/sigof01/sigof01i2.script3
-rw-r--r--testsuite/tests/driver/sigof01/sigof01i2.stdout9
-rw-r--r--testsuite/tests/driver/sigof01/sigof01m.stdout7
-rw-r--r--testsuite/tests/driver/sigof02/Makefile21
-rw-r--r--testsuite/tests/driver/sigof02/Map.hs-boot (renamed from testsuite/tests/driver/sigof02/Map.hsig)0
-rw-r--r--testsuite/tests/driver/sigof02/MapAsSet.hs-boot (renamed from testsuite/tests/driver/sigof02/MapAsSet.hsig)0
-rw-r--r--testsuite/tests/driver/sigof02/sigof02dm.stdout8
-rw-r--r--testsuite/tests/driver/sigof02/sigof02m.stdout10
-rw-r--r--testsuite/tests/driver/sigof03/ASig1.hs-boot (renamed from testsuite/tests/driver/sigof03/ASig1.hsig)0
-rw-r--r--testsuite/tests/driver/sigof03/ASig2.hs-boot (renamed from testsuite/tests/driver/sigof03/ASig2.hsig)0
-rw-r--r--testsuite/tests/driver/sigof03/Makefile5
-rw-r--r--testsuite/tests/driver/sigof04/Makefile2
-rw-r--r--testsuite/tests/driver/sigof04/Sig.hs-boot (renamed from testsuite/tests/driver/sigof04/Sig.hsig)0
-rw-r--r--testsuite/tests/driver/sigof04/sigof04.stderr6
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc264.hs-boot (renamed from testsuite/tests/typecheck/should_compile/tc264.hsig)0
-rw-r--r--testsuite/tests/typecheck/should_compile/tc264.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/all.T8
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail219.hs-boot (renamed from testsuite/tests/typecheck/should_fail/tcfail219.hsig)0
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail219.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail220.hs-boot (renamed from testsuite/tests/typecheck/should_fail/tcfail220.hsig)0
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail220.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail221.hs-boot (renamed from testsuite/tests/typecheck/should_fail/tcfail221.hsig)0
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail221.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail222.hs-boot (renamed from testsuite/tests/typecheck/should_fail/tcfail222.hsig)0
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail222.stderr8
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