{-# LANGUAGE MagicHash,
BangPatterns,
ScopedTypeVariables,
ViewPatterns
#-}
module InPattern where
-- NOTE: non-exhaustive
data Rec = Rec# { x :: Int } {-* MagicHash *-}
f1 :: a -> ()
f1 x# = () {-* MagicHash *-}
f2 :: [a] -> ()
f2 (a# : as#) = () {-* MagicHash, MagicHash *-}
f2 [x#] = () {-* MagicHash *-}
f2 _ = ()
f3 :: Maybe a -> ()
f3 (Just x#) = () {-* MagicHash *-}
f3 _ = ()
f4 :: (a,a) -> ()
f4 (x#, y#) = () {-* MagicHash, MagicHash *-}
f5 :: Rec -> ()
f5 Rec#{x = x} = () {-* MagicHash *-}
f6 :: a -> ()
f6 x#@y# = () {-* MagicHash, MagicHash *-}
f7 :: a -> ()
f7 !x# = () {-* MagicHash, BangPatterns *-}
f8 :: a -> ()
f8 (x# :: a) = () {-* MagicHash *-} -- ScopedTypeVariables
f9 :: a -> ()
f9 (id -> x#) = () {-* MagicHash, ViewPatterns *-}