{-@ LIQUID "--reflection" @-} {-# LANGUAGE TypeFamilies, TypeFamilyDependencies #-} module T1659 where {-@ data LWW = LWW { lwwTime :: Int } @-} data LWW = LWW {lwwTime :: Int} type family Operation t = op type instance Operation LWW = LWW -- crash: SMTLIB2 respSat = Error "line 296 column 77: Sorts Main.LWW and Int are incompatible" {-@ claw :: x : Operation LWW -> { x /= x} @-} claw :: Operation LWW -> () claw (LWW t0) = () -- ok. unsafe. `Operation LWW` changed to `LWW` {-@ claw2 :: x : LWW -> { x /= x} @-} claw2 :: LWW -> () claw2 x@(LWW t0) = () -- ok. unsafe. No pattern matching {-@ claw3 :: x : Operation LWW -> { x /= x} @-} claw3 :: Operation LWW -> () claw3 x = ()