
#8978: Type synonyms are not *exactly* synonyms ----------------------------+---------------------------------------------- Reporter: joelteon | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: GHC rejects valid program Unknown/Multiple | Test Case: Difficulty: Unknown | Blocking: Blocked By: | Related Tickets: | ----------------------------+---------------------------------------------- {{{ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} type Syn a = Associated a class Eq (Associated a) => Foo a where type Associated a :: * foo :: a -> Syn a -> Bool instance Foo () where type Associated () = Int foo _ x = x == x }}} In 7.6.3 and 7.8.1-rc2, this file compiles. In 7.8.1 release, GHC produces this error: {{{ No instance for (Eq (Syn ())) arising from a use of ‘==’ In the expression: x == x In an equation for ‘foo’: foo _ x = x == x In the instance declaration for ‘Foo ()’ }}} even though there is an Eq instance for Associated (), and Syn is just a type synonym. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8978 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler