summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_fail/T4875.hs
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2011-07-20 11:09:03 -0700
committerDavid Terei <davidterei@gmail.com>2011-07-20 11:26:35 -0700
commit16514f272fb42af6e9c7674a9bd6c9dce369231f (patch)
treee4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/typecheck/should_fail/T4875.hs
parentebd422aed41048476aa61dd4c520d43becd78682 (diff)
downloadhaskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/typecheck/should_fail/T4875.hs')
-rw-r--r--testsuite/tests/typecheck/should_fail/T4875.hs28
1 files changed, 28 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_fail/T4875.hs b/testsuite/tests/typecheck/should_fail/T4875.hs
new file mode 100644
index 0000000000..832bb1c8f5
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T4875.hs
@@ -0,0 +1,28 @@
+ {-# OPTIONS -XMultiParamTypeClasses -XFunctionalDependencies -XFlexibleInstances #-}
+module HaskellBug where
+
+data Relation c -- The basic Relation
+ = Rel { relnm :: String -- The name of the relation
+ , relsrc :: c -- Source concept
+ , reltrg :: c -- ^Target concept
+ }
+ deriving Eq
+
+-- This declaration is ok; should not get an error here
+class (Eq concept)=> Association rel concept | rel -> concept where
+ source, target :: rel -> concept
+ -- e.g. Declaration Concept -> Concept
+ sign :: rel -> (concept,concept)
+ sign x = (source x,target x)
+ homogeneous :: rel -> Bool
+ homogeneous s = source s == target s
+
+instance (Eq c)=>Association (Relation c) c where
+ source = relsrc
+ target = reltrg
+
+-- This declaration has a kind error
+-- The error should be reported here
+class (Eq c, Association r c) => Morphic r c where
+ multiplicities :: r c -> [c]
+ multiplicities _ = []