[project @ 2001-05-03 08:18:35 by simonpj]
authorsimonpj <unknown>
Thu, 3 May 2001 08:18:35 +0000 (08:18 +0000)
committersimonpj <unknown>
Thu, 3 May 2001 08:18:35 +0000 (08:18 +0000)
Add a couple of tests

ghc/tests/typecheck/should_run/tcrun011.hs [new file with mode: 0644]
ghc/tests/typecheck/should_run/tcrun011.stdout [new file with mode: 0644]

diff --git a/ghc/tests/typecheck/should_run/tcrun011.hs b/ghc/tests/typecheck/should_run/tcrun011.hs
new file mode 100644 (file)
index 0000000..204bd20
--- /dev/null
@@ -0,0 +1,24 @@
+{-# OPTIONS -fglasgow-exts #-}
+
+-- !!! Existential data tyes
+-- Hugs didn't like this one
+
+module Main (main) where
+
+
+class MyClass a b where
+       foo :: a -> b -> Int
+
+data Special = forall b. (MyClass Int b)=> MkSpecial b
+data General a = forall b. (MyClass a b)=> MkGeneral b
+
+instance MyClass Int Bool where
+   foo x False = -x
+   foo x True  = x
+
+xs :: [General Int]
+xs = [MkGeneral True, MkGeneral False]
+
+main = print [foo (3::Int) x | MkGeneral x <- xs]
+       -- Without the (::Int) part we get an 
+       -- incomprehensible error message :-(
diff --git a/ghc/tests/typecheck/should_run/tcrun011.stdout b/ghc/tests/typecheck/should_run/tcrun011.stdout
new file mode 100644 (file)
index 0000000..7984134
--- /dev/null
@@ -0,0 +1 @@
+[3,-3]