summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_compile/T2494-2.hs
blob: 543f8f47fe8feaa38c6c10f000b9243d042df729 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{-# LANGUAGE RankNTypes, ScopedTypeVariables #-}

-- Trac #2494, should compile ok

module Foo where

foo :: (forall m. Monad m => Maybe (m a) -> Maybe (m a)) -> Maybe a -> Maybe a
{-# NOINLINE [1] foo #-}
foo _ x = x

{-# RULES

"foo/foo"
  forall (f :: forall m. Monad m => Maybe (m a) -> Maybe (m a))
         (g :: forall m. Monad m => Maybe (m a) -> Maybe (m a)) x.
  foo f (foo g x) = foo (f . g) x
 #-}