
-- This one triggers the bug reported in Trac #1092
-- The problem is that the rule
--      forall w. f (\v->w) = w
-- erroneously matches the call
--      f id
--
-- Lint catches the error

module Foo where

f :: (Int -> Int) -> Int
{-# NOINLINE f #-}
f g = g 4
{-# RULES
  "f" forall w. f (\v->w) = w
 #-}

h = f id
