summaryrefslogtreecommitdiff
path: root/testsuite/tests
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests')
-rw-r--r--testsuite/tests/ghci/scripts/T4175.stdout2
-rw-r--r--testsuite/tests/indexed-types/should_compile/T13092b/Makefile10
-rw-r--r--testsuite/tests/indexed-types/should_compile/T13092b/T13092b_1.hs7
-rw-r--r--testsuite/tests/indexed-types/should_compile/T13092b/T13092b_2.hs8
-rw-r--r--testsuite/tests/indexed-types/should_compile/T13092b/all.T5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092/A.hs3
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092/B.hs5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092/C.hs6
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092/Main.hs18
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092/Makefile9
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092/T13092.stderr5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092/all.T5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092c/Makefile12
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092c/T13092c.stderr5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092c/T13092c_1.hs6
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092c/T13092c_2.hs8
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092c/T13092c_3.hs5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092c/T13092c_4.hs7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13092c/all.T8
-rw-r--r--testsuite/tests/perf/compiler/all.T3
20 files changed, 135 insertions, 2 deletions
diff --git a/testsuite/tests/ghci/scripts/T4175.stdout b/testsuite/tests/ghci/scripts/T4175.stdout
index d96a2ef9eb..994886cc4a 100644
--- a/testsuite/tests/ghci/scripts/T4175.stdout
+++ b/testsuite/tests/ghci/scripts/T4175.stdout
@@ -28,9 +28,9 @@ instance Show () -- Defined in ‘GHC.Show’
type instance D () a = Bool -- Defined at T4175.hs:22:10
data instance B () = MkB -- Defined at T4175.hs:13:15
data Maybe a = Nothing | Just a -- Defined in ‘GHC.Base’
-instance Foldable Maybe -- Defined in ‘Data.Foldable’
instance Traversable Maybe -- Defined in ‘Data.Traversable’
instance Monoid a => Monoid (Maybe a) -- Defined in ‘GHC.Base’
+instance Foldable Maybe -- Defined in ‘Data.Foldable’
instance Read a => Read (Maybe a) -- Defined in ‘GHC.Read’
instance Applicative Maybe -- Defined in ‘GHC.Base’
instance Functor Maybe -- Defined in ‘GHC.Base’
diff --git a/testsuite/tests/indexed-types/should_compile/T13092b/Makefile b/testsuite/tests/indexed-types/should_compile/T13092b/Makefile
new file mode 100644
index 0000000000..2b498980c4
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T13092b/Makefile
@@ -0,0 +1,10 @@
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+T13092b:
+ rm -f T13092b_[12].hi
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T13092b_1.hs -ddump-if-trace 2> if.out
+ grep 'Reading interface for .*:GHC.Generics' if.out > /dev/null
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T13092b_2.hs -ddump-if-trace 2> if.out
+ ! grep 'Reading interface for .*:GHC.Generics' if.out
diff --git a/testsuite/tests/indexed-types/should_compile/T13092b/T13092b_1.hs b/testsuite/tests/indexed-types/should_compile/T13092b/T13092b_1.hs
new file mode 100644
index 0000000000..4d13c1580d
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T13092b/T13092b_1.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE TypeFamilies, DeriveGeneric #-}
+
+module T13092b_1 where
+
+import GHC.Generics
+
+data X = X deriving (Generic)
diff --git a/testsuite/tests/indexed-types/should_compile/T13092b/T13092b_2.hs b/testsuite/tests/indexed-types/should_compile/T13092b/T13092b_2.hs
new file mode 100644
index 0000000000..14e1ff8dcc
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T13092b/T13092b_2.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TypeFamilies #-}
+
+module T13092b_2 where
+
+import T13092b_1
+
+x :: X
+x = X
diff --git a/testsuite/tests/indexed-types/should_compile/T13092b/all.T b/testsuite/tests/indexed-types/should_compile/T13092b/all.T
new file mode 100644
index 0000000000..a3047a60e5
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T13092b/all.T
@@ -0,0 +1,5 @@
+# Test that we don't load all family instance interface files
+# when importing a module that defines a family instance
+
+test('T13092b', ignore_stdout,
+ run_command, ['$MAKE -s --no-print-directory T13092b'])
diff --git a/testsuite/tests/indexed-types/should_fail/T13092/A.hs b/testsuite/tests/indexed-types/should_fail/T13092/A.hs
new file mode 100644
index 0000000000..a7acce648b
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092/A.hs
@@ -0,0 +1,3 @@
+{-# LANGUAGE TypeFamilies #-}
+module A where
+type family A a
diff --git a/testsuite/tests/indexed-types/should_fail/T13092/B.hs b/testsuite/tests/indexed-types/should_fail/T13092/B.hs
new file mode 100644
index 0000000000..f04248d4a1
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092/B.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE TypeFamilies #-}
+module B (A, X) where
+import A
+data X
+type instance A (X, b) = ()
diff --git a/testsuite/tests/indexed-types/should_fail/T13092/C.hs b/testsuite/tests/indexed-types/should_fail/T13092/C.hs
new file mode 100644
index 0000000000..73beecf2e8
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092/C.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE RankNTypes #-}
+module C (x) where
+import Data.Proxy
+import B
+x :: Proxy b -> (forall t. Proxy t -> Bool -> A (t, b)) -> (Bool -> ())
+x _ f = f (undefined :: Proxy X)
diff --git a/testsuite/tests/indexed-types/should_fail/T13092/Main.hs b/testsuite/tests/indexed-types/should_fail/T13092/Main.hs
new file mode 100644
index 0000000000..ee62cf0cbb
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092/Main.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE TypeFamilies #-}
+
+module Main where
+
+import Data.Proxy
+import A
+import C
+
+data Y
+type instance A (a, Y) = Bool
+
+y :: Proxy a -> Bool -> A (a, Y)
+y _ = id
+
+z :: Bool -> ()
+z = x (undefined :: Proxy Y) y
+
+main = print (z True)
diff --git a/testsuite/tests/indexed-types/should_fail/T13092/Makefile b/testsuite/tests/indexed-types/should_fail/T13092/Makefile
new file mode 100644
index 0000000000..8bd11ac3c2
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092/Makefile
@@ -0,0 +1,9 @@
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+T13092:
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c A.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c B.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c C.hs
+ ! '$(TEST_HC)' $(TEST_HC_OPTS) -c Main.hs
diff --git a/testsuite/tests/indexed-types/should_fail/T13092/T13092.stderr b/testsuite/tests/indexed-types/should_fail/T13092/T13092.stderr
new file mode 100644
index 0000000000..9df66e7cd1
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092/T13092.stderr
@@ -0,0 +1,5 @@
+
+Main.hs:10:15: error:
+ Conflicting family instance declarations:
+ A (a, Y) = Bool -- Defined at Main.hs:10:15
+ A (B.X, b) = () -- Defined in ‘B’
diff --git a/testsuite/tests/indexed-types/should_fail/T13092/all.T b/testsuite/tests/indexed-types/should_fail/T13092/all.T
new file mode 100644
index 0000000000..090d10db96
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092/all.T
@@ -0,0 +1,5 @@
+# Test that we check consistency of local type family instances
+# with imported ones
+
+test('T13092', extra_files(['A.hs', 'B.hs', 'C.hs', 'Main.hs']),
+ run_command, ['$MAKE -s --no-print-directory T13092'])
diff --git a/testsuite/tests/indexed-types/should_fail/T13092c/Makefile b/testsuite/tests/indexed-types/should_fail/T13092c/Makefile
new file mode 100644
index 0000000000..29a3b104eb
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092c/Makefile
@@ -0,0 +1,12 @@
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+T13092c:
+ rm -f T13092c_[1234].hi
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T13092c_1.hs -ddump-if-trace > /dev/null 2> if.out
+ ! grep 'Reading interface for .*:GHC.Generics' if.out
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T13092c_2.hs -ddump-if-trace > /dev/null 2> if.out
+ ! grep 'Reading interface for .*:GHC.Generics' if.out
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T13092c_3.hs
+ ! '$(TEST_HC)' $(TEST_HC_OPTS) -c T13092c_4.hs
diff --git a/testsuite/tests/indexed-types/should_fail/T13092c/T13092c.stderr b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c.stderr
new file mode 100644
index 0000000000..6676684ec1
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c.stderr
@@ -0,0 +1,5 @@
+
+T13092c_4.hs:7:15: error:
+ Conflicting family instance declarations:
+ F (a, Char) = String -- Defined at T13092c_4.hs:7:15
+ F (T13092c_2.X, b) = Bool -- Defined in ‘T13092c_2’
diff --git a/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_1.hs b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_1.hs
new file mode 100644
index 0000000000..dbab1da195
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_1.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TypeFamilies #-}
+
+module T13092c_1 where
+
+type family F a
+type instance F Int = ()
diff --git a/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_2.hs b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_2.hs
new file mode 100644
index 0000000000..0bbf97efdd
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_2.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TypeFamilies #-}
+
+module T13092c_2 (F) where
+
+import T13092c_1
+
+data X
+type instance F (X, b) = Bool
diff --git a/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_3.hs b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_3.hs
new file mode 100644
index 0000000000..08bda736e5
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_3.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE TypeFamilies #-}
+
+module T13092c_3 (F) where
+
+import T13092c_2
diff --git a/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_4.hs b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_4.hs
new file mode 100644
index 0000000000..a3273f9bfe
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092c/T13092c_4.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE TypeFamilies #-}
+
+module T13092c_4 where
+
+import T13092c_3
+
+type instance F (a, Char) = String
diff --git a/testsuite/tests/indexed-types/should_fail/T13092c/all.T b/testsuite/tests/indexed-types/should_fail/T13092c/all.T
new file mode 100644
index 0000000000..c4e38be054
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T13092c/all.T
@@ -0,0 +1,8 @@
+# Test that we don't load family instance instance files from
+# external packages when defining an instance for a type family
+# defined in the home package, but do read instance files from
+# the home package. (Instance in T13092c_2 overlaps with the one
+# defined in T13092c_4, and would not be read otherwise.)
+
+test('T13092c', ignore_stdout,
+ run_command, ['$MAKE -s --no-print-directory T13092c'])
diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T
index 1df1eae0c0..0592bd6800 100644
--- a/testsuite/tests/perf/compiler/all.T
+++ b/testsuite/tests/perf/compiler/all.T
@@ -964,10 +964,11 @@ test('T13056',
test('T12707',
[ compiler_stats_num_field('bytes allocated',
- [(wordsize(64), 1280336112, 5),
+ [(wordsize(64), 1310037632, 5),
# initial: 1271577192
# 2017-01-22: 1348865648 Allow top-level strings in Core
# 2017-01-31: 1280336112 Join points (#12988)
+ # 2017-02-11: 1310037632 Check local family instances vs imports
]),
],
compile,