[Haskell-cafe] making the GHC Api not write to stderr
Thomas Schilling
nominolo at googlemail.com
Fri May 21 06:53:01 EDT 2010
You could try changing the log_action[1] member of the DynFlags. A
while ago I turned most printed errors into some form of error
message, but I wouldn't be surprised if I missed some places. All
output should go through log_action, though, so try changing that to
intercept any output.
[1]: http://haskell.org/ghc/docs/6.12-latest/html/libraries/ghc-6.12.2/DynFlags.html#v%3Alog_action
On 20 May 2010 19:05, Phyx <lonetiger at gmail.com> wrote:
> I was wondering how to forcibly quiet down the API. I have a custom handler
> in place, but when I call the function on failure both my handler gets
> called and somewhere somehow errors get printed to the stderr, which I
> really need to avoid.
>
>
>
> My current code looks like
>
>
>
> getModInfo :: Bool -> String -> String -> IO (ApiResults ModuleInfo)
>
> getModInfo qual file path = handleSourceError processErrors $
>
> runGhc (Just libdir) $ do
>
> dflags <- getSessionDynFlags
>
> setSessionDynFlags $ configureDynFlags dflags
>
> target <- guessTarget file Nothing
>
> addTarget target
>
> setSessionDynFlags $ dflags { importPaths = [path] }
>
> load LoadAllTargets
>
> graph <- depanal [] False
>
> let modifier = moduleName . ms_mod
>
> modName = modifier $ head graph
>
> includes = includePaths dflags
>
> imports = importPaths dflags
>
>
>
> dflags' <- Debug.trace (moduleNameString modName) getSessionDynFlags
>
> setSessionDynFlags $ dflags' { includePaths = path:includes
>
> , importPaths = path:imports
>
> }
>
>
>
> parsed <- parse modName
>
> checked <- typecheckModule parsed
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
--
Push the envelope. Watch it bend.
More information about the Haskell-Cafe
mailing list