Disable messages with GHC API

Alan & Kim Zimmerman alan.zimm at gmail.com
Fri Feb 3 16:20:44 UTC 2017


Here [1] is the tweak we do in HaRe to get the right dynflags

Alan

[1]
https://github.com/alanz/HaRe/blob/master/src/Language/Haskell/Refact/Utils/Utils.hs#L224

On 3 Feb 2017 5:59 p.m., "Matthew Pickering" <matthewtpickering at gmail.com>
wrote:

> You are right. I looked more closely now and it looks like
> "parseModule" and so on overwrite the DynFlags with a cached version
> before running the relevant piece of the pipeline.
>
>  857    hsc_env <- getSession
>  858    let hsc_env_tmp = hsc_env { hsc_dflags = ms_hspp_opts ms }
>  859    hpm <- liftIO $ hscParse hsc_env_tmp ms
>
>
> I think this is symptom of the fact that DynFlags is not very well
> structured and a lot of different compiler options are lumped
> together. It makes sense that we need to use the right DynFlags to run
> the module but this shouldn't overwrite things which are irrelevant
> like log_action.
>
> Matt
>
>
> On Fri, Feb 3, 2017 at 3:30 PM, Christopher Done <chrisdone at gmail.com>
> wrote:
> > Adding `handleSourceError` around it makes no difference.
> >
> > Which makes sense, as I don't think warnings count as exceptions,
> > otherwise my code would never have completed in the first place.
> >
> > On 3 February 2017 at 12:50, Matthew Pickering
> > <matthewtpickering at gmail.com> wrote:
> >> The errors are eventually caught and printed by "handleSourceError"
> >> which is used a few times in your code. You could either modify one of
> >> these to not print out any errors or try something more intelligent
> >> like is in `parUpsweep_one` which does use the `log_action` in order
> >> to print the errors out.
> >>
> >> On Fri, Feb 3, 2017 at 12:21 PM, Christopher Done <chrisdone at gmail.com>
> wrote:
> >>> In Intero, after loading modules, for each one I run the following
> >>> function: https://github.com/commercialhaskell/intero/blob/
> 300ac5a/src/GhciInfo.hs#L75..L85
> >>>
> >>> If there are warnings or any output, they get outputted. As they are
> >>> already outputted by regular :load, I don’t need the same output
> >>> twice.
> >>>
> >>> How do I disable non-severe output for any GhcMonad m => m a? I’m
> >>> using GHC 8.0.1 presently.
> >>>
> >>> I tried the following before calling getModInfo, expecting there to be
> >>> no output anymore:
> >>>
> >>> +      GHC.setSessionDynFlags
> >>> +        df {log_action = \ref dflags severity srcSpan style msg ->
> return ()}
> >>>
> >>> And this had no effect. I tried some other things but ran out of
> >>> patience to keep a record of them all.
> >>>
> >>> Ciao!
> >>> _______________________________________________
> >>> ghc-devs mailing list
> >>> ghc-devs at haskell.org
> >>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20170203/00d8bf74/attachment.html>


More information about the ghc-devs mailing list