{-@ LIQUID "--exact-data-con" @-} {-# LANGUAGE GADTs #-} module Foo where data Foo a where FInt :: Foo Int FBool :: Foo Bool f :: Foo Int -> Int f z = 10 bar :: Foo a -> Int bar z = case z of FInt -> f z FBool -> 10