diff options
author | David Terei <davidterei@gmail.com> | 2011-07-20 11:09:03 -0700 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2011-07-20 11:26:35 -0700 |
commit | 16514f272fb42af6e9c7674a9bd6c9dce369231f (patch) | |
tree | e4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/typecheck/should_compile/tc229.hs | |
parent | ebd422aed41048476aa61dd4c520d43becd78682 (diff) | |
download | haskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz |
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/typecheck/should_compile/tc229.hs')
-rw-r--r-- | testsuite/tests/typecheck/should_compile/tc229.hs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_compile/tc229.hs b/testsuite/tests/typecheck/should_compile/tc229.hs new file mode 100644 index 0000000000..bf48342ee9 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/tc229.hs @@ -0,0 +1,35 @@ + +-- trac #1406: Constraint doesn't reduce in the presence of quantified +-- type variables + +{-# LANGUAGE FlexibleInstances, UndecidableInstances, Rank2Types, + MultiParamTypeClasses, FunctionalDependencies #-} + +module Problem where + +data Z +data S a + +class HPrefix l +instance (NSub (S Z) ndiff, HDrop ndiff l l) => HPrefix l + +class NSub n1 n3 | n1 -> n3 +instance NSub Z Z +instance NSub n1 n3 => NSub (S n1) n3 + +class HDrop n l1 l2 | n l1 -> l2 +instance HDrop Z l l + +t_hPrefix :: HPrefix l => l -> () +t_hPrefix = undefined + +-- In ghc 6.6.1 this works... +thr' :: (forall r. l -> a) -> a +thr' f = f undefined +thP4' = thr' t_hPrefix + +-- ... but this doesn't work...? +thr :: (forall r. r -> a) -> a +thr f = f undefined +thP4 = thr t_hPrefix + |