#3691: Error message doesn't mention necessary extension in warning
------------------------------------------------+---------------------------
  Reporter:  arsenm                             |          Owner:               
   
      Type:  bug                                |         Status:  closed       
   
  Priority:  normal                             |      Milestone:               
   
 Component:  Compiler                           |        Version:  6.10.4       
   
Resolution:  invalid                            |       Keywords:               
   
Difficulty:                                     |             Os:  
Unknown/Multiple
  Testcase:                                     |   Architecture:  
Unknown/Multiple
   Failure:  Incorrect warning at compile-time  |  
------------------------------------------------+---------------------------
Changes (by simonpj):

  * status:  new => closed
  * difficulty:  =>
  * resolution:  => invalid

Comment:

 The error message looks right to me.  GHC can't deduce `(Print' flag a)`
 from `(Print' flag1 a)`.  You may ask why it doesn't choose `flag1` to be
 equal to `flag`.  It doesn't because it's too hard for the type inference
 engine to do.  The declaration
 {{{
 instance (ShowPred a flag, Print' flag a) => Print a where
     print = print' (undefined::flag)
 }}}
 tries to do so, by using "`flag`" in both places, but under Haskell 98
 rules the type signature on `undefined` means `undefined :: forall flag.
 flag`, and that is not what you want.

 So the language extensions you supplied are not "the minimum required";
 you need `ScopedTypeVariables`.

 I've modified the HaskellWiki page to use LANGUAGE pragmas.

 Simon

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3691#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to