
#11573: Inferred CallStacks expose implicit parameter -------------------------------------+------------------------------------- Reporter: bgamari | Owner: gridaphobe Type: bug | Status: patch Priority: normal | Milestone: 8.0.1 Component: Compiler (Type | Version: 8.0.1-rc2 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D1911 Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): I think that the inferred call stack is also a bug! I believe that for top-level bindings that lack a signature, we are not inferring a `HasCallStack` constraint: {{{ foo (x:xs) = x foo [] = error "foo" }}} Here we infer `foo :: [a] -> a`, without a `HasCallStack` constraint. Correct? Alas the [http://downloads.haskell.org/~ghc/master/users- guide/glasgow_exts.html#hascallstack user manual section] does not say this. It should. Also, I believe that [wiki:ExplicitCallStack/ImplicitLocations this is the relevant wiki page] (correct?). Yet it is full of "proposals", and this particular point is an "open choice" under "Discussion". It would be great it * The user manual was updated to be a more complete and accurate spec * It referred to the wiki page * The wiki page was updated to reflect reality Finally, back to GHCi. I think that a `let` binding in GHCi should have the same status as a top-level binding in a module; and hence should not get an automatically-inferred `HasCallStack` constraint. So there are four things to fix: * Using the `HasCallStack` synonym * Treating GHCi `let` bindings as top level * Update the user manual * Update the wiki page Eric, if you are willing it would be great if you could look into this. It's such a valuable feature. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11573#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler