content: {-# LANGUAGE TupleSections, RankNTypes, ImpredicativeTypes #-}
  
  -- Sept 16: This test involves wholesale use of impredicative polymorphism
  --          and I'm amazed it has worked for so long. Anyway it is now
  --          failing, which is OK.  We don't really support impredicative
  --          polymorphism!
  --
  -- Apr 20: Works again.  NB: the ImpredicativeTypes flag
  --
  -- July 20: Fails again.  Under Quick Look this now fails, because
  --          we don't have a special typing rule for ExplicitTuples
  --          We could, and it would improve the typing for tuple sections.
  --          But for now I'm just letting it fail, until someone yells.
  --
  -- The test was added by Max in 5e8ff849, apparently to test tuple sections
  
  module Main where
  
  e :: a -> (forall b. b -> b -> b) -> (a, String, forall c. c -> c -> c)
  e = (,"Hello" ++ "World",)
  
  dropFunction :: (a, String, forall c. c -> c -> c) -> (a, String, Int)
  dropFunction (x, y, z) = (x, y, z 10 20)
  
  main = print ( dropFunction (e "Meh" (flip const))
               , dropFunction (e 10 const))
  