summaryrefslogtreecommitdiff
path: root/testsuite/tests/driver/recomp016
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/driver/recomp016')
-rw-r--r--testsuite/tests/driver/recomp016/A.hs4
-rw-r--r--testsuite/tests/driver/recomp016/A2.hs4
-rw-r--r--testsuite/tests/driver/recomp016/C.hs2
-rw-r--r--testsuite/tests/driver/recomp016/D.hs2
-rw-r--r--testsuite/tests/driver/recomp016/E.hs3
-rw-r--r--testsuite/tests/driver/recomp016/Makefile19
-rw-r--r--testsuite/tests/driver/recomp016/all.T7
-rw-r--r--testsuite/tests/driver/recomp016/recomp016.stdout12
8 files changed, 53 insertions, 0 deletions
diff --git a/testsuite/tests/driver/recomp016/A.hs b/testsuite/tests/driver/recomp016/A.hs
new file mode 100644
index 0000000000..17a9dc0cf5
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/A.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE TypeFamilies #-}
+module A where
+type family F a
+type instance F Int = Bool
diff --git a/testsuite/tests/driver/recomp016/A2.hs b/testsuite/tests/driver/recomp016/A2.hs
new file mode 100644
index 0000000000..bb0409ee1e
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/A2.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE TypeFamilies #-}
+module A2 where
+type family F a
+type instance F Int = Bool
diff --git a/testsuite/tests/driver/recomp016/C.hs b/testsuite/tests/driver/recomp016/C.hs
new file mode 100644
index 0000000000..dc3b65802f
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/C.hs
@@ -0,0 +1,2 @@
+module C where
+import B
diff --git a/testsuite/tests/driver/recomp016/D.hs b/testsuite/tests/driver/recomp016/D.hs
new file mode 100644
index 0000000000..604f04522c
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/D.hs
@@ -0,0 +1,2 @@
+module D where
+import C
diff --git a/testsuite/tests/driver/recomp016/E.hs b/testsuite/tests/driver/recomp016/E.hs
new file mode 100644
index 0000000000..5adb6a831d
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/E.hs
@@ -0,0 +1,3 @@
+module E where
+import D
+import B
diff --git a/testsuite/tests/driver/recomp016/Makefile b/testsuite/tests/driver/recomp016/Makefile
new file mode 100644
index 0000000000..821b126c45
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/Makefile
@@ -0,0 +1,19 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# Recompilation tests
+
+clean:
+ rm -f *.o *.hi
+
+# bug #12723
+
+recomp016: clean
+ echo 'module B (module A) where import A' > B.hs
+ echo 'first run'
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make E.hs
+ sleep 1
+ echo 'module B (module A2) where import A2' > B.hs
+ echo 'second run'
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make E.hs
diff --git a/testsuite/tests/driver/recomp016/all.T b/testsuite/tests/driver/recomp016/all.T
new file mode 100644
index 0000000000..a1a2ebd55a
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/all.T
@@ -0,0 +1,7 @@
+# Test for #12723, a recompilation bug
+
+test('recomp016',
+ [ clean_cmd('$MAKE -s clean') ],
+ run_command,
+ ['$MAKE -s --no-print-directory recomp016'])
+
diff --git a/testsuite/tests/driver/recomp016/recomp016.stdout b/testsuite/tests/driver/recomp016/recomp016.stdout
new file mode 100644
index 0000000000..eb6c6fce42
--- /dev/null
+++ b/testsuite/tests/driver/recomp016/recomp016.stdout
@@ -0,0 +1,12 @@
+first run
+[1 of 5] Compiling A ( A.hs, A.o )
+[2 of 5] Compiling B ( B.hs, B.o )
+[3 of 5] Compiling C ( C.hs, C.o )
+[4 of 5] Compiling D ( D.hs, D.o )
+[5 of 5] Compiling E ( E.hs, E.o )
+second run
+[1 of 5] Compiling A2 ( A2.hs, A2.o )
+[2 of 5] Compiling B ( B.hs, B.o )
+[3 of 5] Compiling C ( C.hs, C.o ) [B changed]
+[4 of 5] Compiling D ( D.hs, D.o ) [C changed]
+[5 of 5] Compiling E ( E.hs, E.o ) [B changed]