Test Trac #6015 and #6068
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 16 May 2012 10:15:02 +0000 (11:15 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 16 May 2012 10:15:02 +0000 (11:15 +0100)
testsuite/tests/polykinds/T6015a.hs [new file with mode: 0644]
testsuite/tests/polykinds/T6068.hs [new file with mode: 0644]
testsuite/tests/polykinds/T6068.script [new file with mode: 0644]
testsuite/tests/polykinds/T6068.stdout [new file with mode: 0644]
testsuite/tests/polykinds/all.T

diff --git a/testsuite/tests/polykinds/T6015a.hs b/testsuite/tests/polykinds/T6015a.hs
new file mode 100644 (file)
index 0000000..f42019c
--- /dev/null
@@ -0,0 +1,14 @@
+{-# LANGUAGE PolyKinds, KindSignatures, FunctionalDependencies,  FlexibleInstances,
+              UndecidableInstances, TypeOperators, DataKinds,  FlexibleContexts #-}
+
+module T6015a where
+
+import Prelude hiding ((++))
+
+data T a = T
+
+class ((a :: [k]) ++ (b :: [k])) (c :: [k]) | a b -> c  
+instance ('[] ++ b) b  
+instance (a ++ b) c => ((x ': a) ++ b) (x ': c)
+
+test = T :: ('[True] ++ '[]) l => T l
diff --git a/testsuite/tests/polykinds/T6068.hs b/testsuite/tests/polykinds/T6068.hs
new file mode 100644 (file)
index 0000000..f9b7dc2
--- /dev/null
@@ -0,0 +1,27 @@
+{-# LANGUAGE PolyKinds, DataKinds, TypeFamilies, GADTs, MultiParamTypeClasses,
+             FunctionalDependencies, FlexibleInstances, UndecidableInstances, ExistentialQuantification #-}
+
+module T6068 where
+
+import Prelude hiding (Maybe, Nothing)
+
+data Maybe :: * -> * where
+  Nothing :: Maybe a
+
+data family Sing (a :: k)
+
+data instance Sing (a :: Maybe k) where
+  SNothing :: Sing Nothing
+
+data KProxy (a :: *) = KProxy
+data Existential (p :: KProxy k) =
+  forall (a :: k). Exists (Sing a)
+
+class HasSingleton a (kp :: KProxy k) | a -> kp where
+  exists :: a -> Existential kp
+
+instance forall a (mp :: KProxy (Maybe ak)). HasSingleton (Maybe a) mp where
+  exists Nothing = Exists SNothing
+
+-- instance forall (a ::*) (mp :: KProxy (Maybe ak)). HasSingleton (Maybe ak) (Maybe a) mp where
+--   exists Nothing = Exists SNothing
diff --git a/testsuite/tests/polykinds/T6068.script b/testsuite/tests/polykinds/T6068.script
new file mode 100644 (file)
index 0000000..6b34183
--- /dev/null
@@ -0,0 +1,2 @@
+:l T6068
+:t exists Nothing
diff --git a/testsuite/tests/polykinds/T6068.stdout b/testsuite/tests/polykinds/T6068.stdout
new file mode 100644 (file)
index 0000000..32952bb
--- /dev/null
@@ -0,0 +1 @@
+exists Nothing :: Existential (Maybe *) kp
index cb017f1..d2459d0 100644 (file)
@@ -46,3 +46,5 @@ test('T6044', normal, compile, [''])
 test('T6054', normal, run_command, ['$MAKE -s --no-print-directory T6054'])
 test('T6081', normal, compile, [''])
 test('T6015', normal, compile, [''])
+test('T6015a', normal, compile, [''])
+test('T6068', normal, ghci_script, ['T6068.script'])