@@ -7,7 +7,6 @@
77{-# LANGUAGE FlexibleInstances #-}
88{-# LANGUAGE GADTs #-}
99{-# LANGUAGE GeneralizedNewtypeDeriving #-}
10−{-# LANGUAGE ImplicitParams #-}
1110{-# LANGUAGE MultiParamTypeClasses #-}
1211{-# LANGUAGE OverloadedStrings #-}
1312{-# LANGUAGE RankNTypes #-}
@@ -997,11 +996,15 @@ liftLoc (Loc a b c (d1, d2) (e1, e2)) = [|Loc
997996-- fill the 'Maybe Loc' gap in 'logF' of this module, and relies on implicit
998997-- callstacks when available (GHC > 7.8).
999998#if MIN_VERSION_base(4, 8, 0)
1000−getLoc :: (?loc :: CallStack) => Maybe Loc
1001−getLoc = case getCallStack ?loc of
999+getLoc :: HasCallStack => Maybe Loc
1000+getLoc = case getCallStack callStack of
10021001 [] -> Nothing
1003− xs -> Just . toLoc . last $ xs
1002+ xs -> Just . toLoc . head $ filter filterKatip xs
10041003 where
1004+ filterKatip :: (String, SrcLoc) -> Bool
1005+ filterKatip (_, srcloc) = not $
1006+ "katip-" `isPrefixOf` srcLocPackage srcloc
1007+
10051008 toLoc :: (String, SrcLoc) -> Loc
10061009 toLoc (_, l) = Loc {
10071010 loc_filename = srcLocFile l
@@ -1032,7 +1035,7 @@ logT = [| \ a ns sev msg -> logItem a ns (Just $(getLocTH)) sev msg |]
10321035
10331036
10341037-------------------------------------------------------------------------------
1035−-- | 'Loc'-tagged logging using implicit-callstacks when available.
1038+-- | 'Loc'-tagged logging using 'GHC.Stack' when available.
10361039--
10371040-- This function does not require template-haskell as it
10381041-- automatically uses <https://hackage.haskell.org/package/base-4.8.2.0/docs/GHC-Stack.html#v:getCallStack implicit-callstacks>
@@ -1043,7 +1046,7 @@ logT = [| \ a ns sev msg -> logItem a ns (Just $(getLocTH)) sev msg |]
10431046--
10441047-- @logLoc obj mempty InfoS "Hello world"@
10451048#if MIN_VERSION_base(4, 8, 0)
1046−logLoc :: (Applicative m, LogItem a, Katip m, ?loc :: CallStack)
1049+logLoc :: (Applicative m, LogItem a, Katip m, HasCallStack)
10471050#else
10481051logLoc :: (Applicative m, LogItem a, Katip m)
10491052#endif