#7074: Way too long, and unhelpful, error message
-------------------------------+--------------------------------------------
  Reporter:  ksf               |          Owner:                  
      Type:  bug               |         Status:  closed          
  Priority:  normal            |      Milestone:                  
 Component:  Compiler          |        Version:  7.4.2           
Resolution:  fixed             |       Keywords:                  
        Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
   Failure:  None/Unknown      |     Difficulty:  Unknown         
  Testcase:                    |      Blockedby:                  
  Blocking:                    |        Related:                  
-------------------------------+--------------------------------------------
Changes (by simonpj):

  * status:  new => closed
  * difficulty:  => Unknown
  * resolution:  => fixed


Comment:

 Good point.  An easy fix the pretty printer yields this
 {{{
 T7074.hs:65:5:
     No instance for (Control.Monad.Fix.MonadFix m0)
       arising from a do statement
     The type variable `m0' is ambiguous
     Possible fix: add a type signature that fixes these type variable(s)
     Note: there are several potential instances:
       instance Control.Monad.Fix.MonadFix ((->) r)
         -- Defined in `Control.Monad.Fix'
       instance Control.Monad.Fix.MonadFix (Either e)
         -- Defined in `Control.Monad.Fix'
       instance Control.Monad.Fix.MonadFix IO
         -- Defined in `Control.Monad.Fix'
       ...plus three others
     In a stmt of an 'mdo' block:
       rec { words <- newRule
                      $ optional pause ->> cmany (word <<- optional pause);
             word <- newRule $ lojbanWord // nonLojbanWord;
             lojbanWord <- newRule $ cmene // cmavo // brivla;
             brivla <- newRule $ gismu // fuhivla // lujvo;
             cmene <- newRule $ jbocme // zifcme;
             .... }
     In the expression:
       mdo { rec { words <- newRule
                            $ optional pause ->> cmany (word <<- optional
 pause);
                   word <- newRule $ lojbanWord // nonLojbanWord;
                   lojbanWord <- newRule $ cmene // cmavo // brivla;
                   .... };
             return words }
     In an equation for `parser':
         parser
           = mdo { rec { words <- newRule
                                  $ optional pause ->> cmany (word <<-
 optional pause);
                         word <- newRule $ lojbanWord // nonLojbanWord;
                         .... };
                   return words }

 }}}
 in place of the monster error.  Since I didn't have `Text.Parsers.Frisby`
 I had to add a lot of error-bindings with bogus types, which is why the
 message is different.  But I can confirm that the massive output is gone.

 I can't comment on the line number reported without a reproducible test
 case. If you think it's important, maybe you can make another ticket for
 it?  Thanks for pointing out the pretty-printing problem.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7074#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to