{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -Wall #-} module Simple where pattern Foo :: () pattern Foo = () a :: () -> () a Foo = () data A = B | C | D {-# COMPLETE Foo #-} {-# COMPLETE B,C #-} {-# COMPLETE B #-} b :: A -> A b B = B b C = C {-# COMPLETE Foo :: () #-}