{-# LANGUAGE NoImplicitForAll, GADTs, DeriveAnyClass #-} module RnNoImplicitForAll where import GHC.Types f :: a -> a f = undefined type T :: k -> Type data T k data G a where MkG :: a -> Maybe b -> G (Either Int b) rightTrue = Right True :: Either a Bool munit :: forall m a . Monad m => m a munit = pure undefined {-# SPECIALISE munit :: IO a #-} class C a b data TD deriving (C a) instance Show a => Show (Maybe a) type family F a type instance F (Maybe a) = Int {-# RULES "name" forall (x :: Maybe a). foo x = 5 #-} foo x = 5 id (a :: t) = t