summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZubin Duggal <zubin.duggal@gmail.com>2022-05-31 13:08:05 +0530
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-09-01 01:18:50 -0400
commit15111af6adb1c85af5b17088134c9e71bee025e3 (patch)
treec51a704fc5b1242e8fcafcec84477b99a2b8a61c
parent6b2f7ffea51304091bfa4bd1d88a58ea373ee551 (diff)
downloadhaskell-15111af6adb1c85af5b17088134c9e71bee025e3.tar.gz
Add regression test for #21550
This was fixed by ca90ffa321a31842a32be1b5b6e26743cd677ec5 "Use local instances with least superclass depth"
-rw-r--r--testsuite/tests/typecheck/should_compile/T21550.hs39
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T1
2 files changed, 40 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_compile/T21550.hs b/testsuite/tests/typecheck/should_compile/T21550.hs
new file mode 100644
index 0000000000..4248a1f533
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T21550.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE QuantifiedConstraints #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE UndecidableInstances #-}
+
+module Main where
+
+import Data.Function
+import Data.Kind
+import GHC.Generics
+import GHC.TypeLits
+
+-- inlined generic-data imports:
+from' :: Generic a => a -> Rep a ()
+from' = from
+
+geq :: (Generic a, Eq (Rep a ())) => a -> a -> Bool
+geq = (==) `on` from'
+
+gcompare :: (Generic a, Ord (Rep a ())) => a -> a -> Ordering
+gcompare = compare `on` from'
+
+
+-- test case:
+data A (v :: Symbol -> Type -> Type) a b deriving (Generic,Generic1)
+
+instance (Eq a , (forall w z . Eq z => Eq (v w z)) , Eq b) => Eq (A v a b) where
+ {-# INLINE (==) #-}
+ (==) = geq
+
+instance (Ord a , (forall w z . Eq z => Eq (v w z)) , (forall w z . Ord z => Ord (v w z)) , Ord b) => Ord (A v a b) where
+ {-# INLINE compare #-}
+ compare = gcompare
+
+main :: IO ()
+main = pure ()
diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T
index dae6e5bca7..802eb9097d 100644
--- a/testsuite/tests/typecheck/should_compile/all.T
+++ b/testsuite/tests/typecheck/should_compile/all.T
@@ -855,3 +855,4 @@ test('DeepSubsumption08', normal, compile, [''])
test('DeepSubsumption09', normal, compile, [''])
test('T21951a', normal, compile, ['-Wredundant-strictness-flags'])
test('T21951b', normal, compile, ['-Wredundant-strictness-flags'])
+test('T21550', normal, compile, [''])