From 0e5a48cc13843ff5d31963c711900652cc896649 Mon Sep 17 00:00:00 2001 From: simonpj Date: Thu, 3 May 2001 08:18:35 +0000 Subject: [PATCH] [project @ 2001-05-03 08:18:35 by simonpj] Add a couple of tests --- ghc/tests/typecheck/should_run/tcrun011.hs | 24 ++++++++++++++++++++++++ ghc/tests/typecheck/should_run/tcrun011.stdout | 1 + 2 files changed, 25 insertions(+) create mode 100644 ghc/tests/typecheck/should_run/tcrun011.hs create mode 100644 ghc/tests/typecheck/should_run/tcrun011.stdout diff --git a/ghc/tests/typecheck/should_run/tcrun011.hs b/ghc/tests/typecheck/should_run/tcrun011.hs new file mode 100644 index 0000000..204bd20 --- /dev/null +++ b/ghc/tests/typecheck/should_run/tcrun011.hs @@ -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 index 0000000..7984134 --- /dev/null +++ b/ghc/tests/typecheck/should_run/tcrun011.stdout @@ -0,0 +1 @@ +[3,-3] -- 1.7.10.4