summaryrefslogtreecommitdiff
path: root/testsuite/tests/driver/recomp017
diff options
context:
space:
mode:
authorReid Barton <rwbarton@gmail.com>2017-01-20 15:03:44 -0500
committerBen Gamari <ben@smart-cactus.org>2017-01-20 16:13:59 -0500
commitb47613178232f8e849ac58ebd4111a34ab9c140b (patch)
treed62362f932b37d7f139d067b29a334b36b9e69cf /testsuite/tests/driver/recomp017
parent33140f41b931fb81bf2e5aa28603fe757bb3779d (diff)
downloadhaskell-b47613178232f8e849ac58ebd4111a34ab9c140b.tar.gz
Add a failing test for #13099
Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2990 GHC Trac Issues: #13099
Diffstat (limited to 'testsuite/tests/driver/recomp017')
-rw-r--r--testsuite/tests/driver/recomp017/A.hs3
-rw-r--r--testsuite/tests/driver/recomp017/B.hs7
-rw-r--r--testsuite/tests/driver/recomp017/C.hs5
-rw-r--r--testsuite/tests/driver/recomp017/C2.hs5
-rw-r--r--testsuite/tests/driver/recomp017/D.hs3
-rw-r--r--testsuite/tests/driver/recomp017/E.hs10
-rw-r--r--testsuite/tests/driver/recomp017/Makefile21
-rw-r--r--testsuite/tests/driver/recomp017/all.T11
8 files changed, 65 insertions, 0 deletions
diff --git a/testsuite/tests/driver/recomp017/A.hs b/testsuite/tests/driver/recomp017/A.hs
new file mode 100644
index 0000000000..8f9d7c18e8
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/A.hs
@@ -0,0 +1,3 @@
+{-# LANGUAGE TypeFamilies #-}
+module A where
+type family F a
diff --git a/testsuite/tests/driver/recomp017/B.hs b/testsuite/tests/driver/recomp017/B.hs
new file mode 100644
index 0000000000..10f842365f
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/B.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE TypeFamilies #-}
+module B where
+import A
+data B
+type instance F (B,b) = ()
+b :: () -> F (B,b)
+b = id
diff --git a/testsuite/tests/driver/recomp017/C.hs b/testsuite/tests/driver/recomp017/C.hs
new file mode 100644
index 0000000000..a6d1af041e
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/C.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE TypeFamilies #-}
+module C where
+import A
+data C
+type instance F (a,C) = ()
diff --git a/testsuite/tests/driver/recomp017/C2.hs b/testsuite/tests/driver/recomp017/C2.hs
new file mode 100644
index 0000000000..551de2b325
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/C2.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE TypeFamilies #-}
+module C where
+import A
+data C
+type instance F (a,C) = Bool
diff --git a/testsuite/tests/driver/recomp017/D.hs b/testsuite/tests/driver/recomp017/D.hs
new file mode 100644
index 0000000000..8ed80ad8a9
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/D.hs
@@ -0,0 +1,3 @@
+module D (b) where
+import B
+import C
diff --git a/testsuite/tests/driver/recomp017/E.hs b/testsuite/tests/driver/recomp017/E.hs
new file mode 100644
index 0000000000..326a03db76
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/E.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE TypeApplications #-}
+module E where
+import A
+import B
+import C
+import D
+c :: F (a, C) -> Bool
+c = id
+e :: () -> Bool
+e = c . b @ C
diff --git a/testsuite/tests/driver/recomp017/Makefile b/testsuite/tests/driver/recomp017/Makefile
new file mode 100644
index 0000000000..6a2f92a875
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/Makefile
@@ -0,0 +1,21 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# Recompilation tests
+
+clean:
+ rm -f *.o *.hi
+
+# bug #13099
+
+recomp017: clean
+ echo 'first run'
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make D.hs
+ sleep 1
+ # A simple 'cp' would overwrite the original file,
+ # pointed to by the symlink
+ mv -f C2.hs C.hs
+ touch C.hs
+ echo 'second run'
+ ! '$(TEST_HC)' $(TEST_HC_OPTS) --make E.hs
diff --git a/testsuite/tests/driver/recomp017/all.T b/testsuite/tests/driver/recomp017/all.T
new file mode 100644
index 0000000000..1ba5343b9c
--- /dev/null
+++ b/testsuite/tests/driver/recomp017/all.T
@@ -0,0 +1,11 @@
+# Test for #13099, a recompilation bug involving type family instances
+
+test('recomp017',
+ [ clean_cmd('$MAKE -s clean'),
+ extra_files(['A.hs', 'B.hs', 'C.hs', 'C2.hs',
+ 'D.hs', 'E.hs']),
+ ignore_stdout,
+ expect_broken(13099) ],
+ run_command,
+ ['$MAKE -s --no-print-directory recomp017'])
+