
#10662: GHC warning shows technical summary of AST instead of the user's code -------------------------------------+------------------------------------- Reporter: kolmodin | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.10.2-rc2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Description changed by kolmodin: Old description:
I got a warning for some code I wrote;
{{{#!hs forkIO (....) }}}
Naturally GHC warns me that I'm throwing away the result, and should write like this;
{{{#!hs _ <- forkIO (...) }}}
However, the warning is expressed in a somewhat confusing way, not sure this is intentional.
{{{ examples/route_guide_client.hs:84:5: Warning: A do-notation statement discarded a result of type ‘ThreadId’ Suppress this warning by saying ‘_ <- ($) forkIO let AbsBinds [] [] {Exports: [go <= go <>] Exported types: go :: [L.ByteString] -> IO () [LclId, Str=DmdType] Binds: go acc = ...} in go []’ or by using the flag -fno-warn-unused-do-bind
}}}
I find it confusing that the warning mentions AbsBinds, exports and types. I'd expect a snippet of my code in the warning.
However, doesn't look like this is a (recent) regression. The same happens GHC 7.8.4 and 7.10.1.
New description: Have a look at this code and the warning it generates; {{{#!hs -- T10662.hs main :: IO () main = do return $ let a = "hello" in a return () }}} We compile it with {{{ghc --make -Wall T10662.hs}}} {{{ [1 of 1] Compiling Main ( T10662.hs, T10662.o ) T10662.hs:3:3: Warning: A do-notation statement discarded a result of type ‘[Char]’ Suppress this warning by saying ‘_ <- ($) return let AbsBinds [] [] {Exports: [a <= a <>] Exported types: a :: [Char] [LclId, Str=DmdType] Binds: a = "hello"} in a’ or by using the flag -fno-warn-unused-do-bind Linking T10662 ... $ }}} Naturally GHC warns me that I'm throwing away the result, and should write like this; {{{#!hs main :: IO () main = do _ <- return $ let a = "hello" in a return () }}} I find it confusing that the warning mentions AbsBinds, exports and types. I'd expect a snippet of my code in the warning. It doesn't look like this is a (recent) regression. The same happens GHC 7.8.4 and 7.10.1. -- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10662#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler