
#11793: Confusing type error from constrained class method -------------------------------------+------------------------------------- Reporter: gridaphobe | Owner: Type: bug | Status: new Priority: normal | Milestone: 8.0.1 Component: Compiler | Version: 8.0.1-rc2 Keywords: error-message | Operating System: Unknown/Multiple Architecture: | Type of failure: Incorrect Unknown/Multiple | warning at compile-time Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- {{{#!hs import GHC.Stack class Foo a where foo :: HasCallStack => a -> String instance Foo () where foo () = prettyCallStack callStack main = putStrLn (foo ()) }}} {{{ ~/S/ghc> ./inplace/bin/ghc-stage2 --make Foo.hs [1 of 1] Compiling Main ( Foo.hs, Foo.o ) Foo.hs:4:3: error: • Constraint ‘HasCallStack’ in the type of ‘foo’ constrains only the class type variables Use ConstrainedClassMethods to allow it • When checking the class method: foo :: forall a. (Foo a, HasCallStack) => a -> String In the class declaration for ‘Foo’ }}} The error says that `HasCallStack` constrains the class type variable `a`, which is incorrect. Is the error message supposed to be that `HasCallStack` '''should''' constrain the class type variable and nothing else? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11793 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler