
#12533: Internal error using redundant forall with default signature -------------------------------------+------------------------------------- Reporter: dfeuer | Owner: Type: bug | Status: new Priority: normal | Milestone: 8.0.2 Component: Compiler | Version: 8.0.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: Compile-time Unknown/Multiple | crash Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- {{{#!hs {-# LANGUAGE ScopedTypeVariables, DefaultSignatures #-} class Foo x where foo :: forall a . x a -> x a default foo :: forall a . x a -> x a foo x = go where go :: x a go = undefined }}} GHC (7.8.3 and 8.0.1) chokes on the above with the message {{{ Buggy.hs:7:19: error: • GHC internal error: ‘a’ is not in scope during type checking, but it passed the renamer tcl_env of environment: [aoY :-> Type variable ‘x’ = x, ap0 :-> Type variable ‘a’ = a, ap1 :-> Identifier[x::x a, <NotTopLevel>]] • In the first argument of ‘x’, namely ‘a’ In the type signature: go :: x a In an equation for ‘foo’: foo x = go where go :: x a go = undefined }}} If I remove the redundant `forall` it works fine: {{{#!hs class Foo x where foo :: x a -> x a default foo :: forall a . x a -> x a foo x = go where go :: x a go = undefined }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12533 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler