{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleContexts  #-}

module T5236 where

data A
data B

class Id a b | a -> b, b -> a

instance Id A A
instance Id B B

-- The fundeps mean that this type signature
-- has a (derived) insoluble Given, A~B, but
-- we now ignore that (Trac #12466)
loop :: Id A B => Bool
loop = True

-- f :: Bool
-- f = loop
