
#10845: Incorrect behavior when let binding implicit CallStack object -------------------------------------+------------------------------------- Reporter: nitromaster101 | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by nitromaster101): There are two issues: since f3 doesn't produce any warnings, neither should f since the only difference is the type of ?loc. If I add some callers to f and f2: {{{ {-# LANGUAGE ImplicitParams #-} import GHC.Types f :: (?loc :: CallStack) => String f = let y = show $ map (srcLocStartLine . snd) $ getCallStack ?loc in y f2 :: (?loc :: CallStack) => String f2 = show $ map (srcLocStartLine . snd) $ getCallStack ?loc f_caller = f f2_caller = f2 }}} We get the warning: {{{ [1 of 1] Compiling Main ( Bug.hs, interpreted ) Bug.hs:5:6: warning: Redundant constraint: ?loc::CallStack In the type signature for: f :: (?loc::CallStack) => String }}} And when we run them the call stack returned by f is wrong, it should have two entries (the line number for f_caller and f): {{{ *> f_caller "[6]" *> f2_caller "[10,13]" }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10845#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler