From 16514f272fb42af6e9c7674a9bd6c9dce369231f Mon Sep 17 00:00:00 2001 From: David Terei Date: Wed, 20 Jul 2011 11:09:03 -0700 Subject: Move tests from tests/ghc-regress/* to just tests/* --- testsuite/tests/typecheck/testeq1/FakePrelude.hs | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 testsuite/tests/typecheck/testeq1/FakePrelude.hs (limited to 'testsuite/tests/typecheck/testeq1/FakePrelude.hs') diff --git a/testsuite/tests/typecheck/testeq1/FakePrelude.hs b/testsuite/tests/typecheck/testeq1/FakePrelude.hs new file mode 100644 index 0000000000..80161655d0 --- /dev/null +++ b/testsuite/tests/typecheck/testeq1/FakePrelude.hs @@ -0,0 +1,41 @@ +{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, + OverlappingInstances, UndecidableInstances #-} + +-- +-- Test case adopted from the HList library +-- http://www.cwi.nl/~ralf/HList/ +-- + +module FakePrelude where + + +-- +-- Type-level Booleans; nothing weird +-- +data HTrue; hTrue :: HTrue; hTrue = undefined +data HFalse; hFalse :: HFalse; hFalse = undefined +class HBool x; instance HBool HTrue; instance HBool HFalse +instance Show HTrue where show _ = "HTrue" +instance Show HFalse where show _ = "HFalse" + + +-- +-- Type-level type equality +-- +class HBool b => TypeEq x y b | x y -> b + + +-- +-- Value-level incarnation; nothing too weird. +-- Rely on lazy show for type-level Booleans +-- +typeEq :: TypeEq t t' b => t -> t' -> b +typeEq = undefined + + +-- +-- Type-level cast +-- +class TypeCast x y | x -> y, y -> x + where + typeCast :: x -> y -- cgit v1.2.1