trace-embrace 1.1.0 → 1.2.0
raw patch · 11 files changed
+106/−128 lines, 11 filesdep ~aesondep ~basedep ~bytestring
Dependency ranges changed: aeson, base, bytestring, containers, cpphs, directory, generic-lens, ghc, haddock-use-refs, lens, radix-tree, refined, tagged, template-haskell, text, th-lock, transformers, yaml
Files
- changelog.md +3/−0
- src/Debug/TraceEmbrace/Config/Load.hs +0/−1
- src/Debug/TraceEmbrace/Config/Type/Mode.hs +0/−1
- src/Debug/TraceEmbrace/Config/Validation.hs +0/−1
- src/Debug/TraceEmbrace/FileIndex.hs +44/−31
- src/Debug/TraceEmbrace/Internal/Rewrap.hs +0/−4
- src/Debug/TraceEmbrace/Show.hs +0/−4
- src/Debug/TraceEmbrace/ShowTh.hs +0/−4
- test/Debug/TraceEmbrace/Test/TraceEmbrace/Yaml.hs +5/−2
- test/Demo.hs +1/−1
- trace-embrace.cabal +53/−79
changelog.md view
@@ -1,5 +1,8 @@ # trace-embrace changelog +## Version 1.2.0 2025-06-05+ * support GHC-9.12.2+ ## Version 1.1.0 2025-06-04 * add `a`, `u` and `tg` for tracing guarded functions
src/Debug/TraceEmbrace/Config/Load.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedRecordDot #-} {-# LANGUAGE OverloadedStrings #-} module Debug.TraceEmbrace.Config.Load where
src/Debug/TraceEmbrace/Config/Type/Mode.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE DeriveLift #-} {-# LANGUAGE OverloadedStrings #-} module Debug.TraceEmbrace.Config.Type.Mode where
src/Debug/TraceEmbrace/Config/Validation.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE PolyKinds #-} module Debug.TraceEmbrace.Config.Validation where import Data.Functor.Identity
src/Debug/TraceEmbrace/FileIndex.hs view
@@ -1,6 +1,4 @@-{-# LANGUAGE DeriveLift #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE NamedFieldPuns #-} {-# OPTIONS_GHC -Wno-orphans #-} @@ -8,25 +6,40 @@ module Debug.TraceEmbrace.FileIndex where import Data.IntMap.Strict qualified as IM-import Data.String-import GHC.Data.Bag-import GHC.Data.FastString-import GHC.Data.StringBuffer-import GHC.Driver.Config.Parser-import GHC.Driver.DynFlags-import GHC.Parser-import GHC.Parser.Annotation-import GHC.Parser.Lexer hiding (buffer)-import GHC.Tc.Types-import GHC.Types.Name hiding (Name)-import GHC.Types.Name.Reader+import Data.String ( IsString )+import GHC.Data.FastString ( mkFastString )+import GHC.Data.StringBuffer ( stringToStringBuffer )+import GHC.Driver.Config.Parser ( initParserOpts )+import GHC.Driver.DynFlags ( HasDynFlags(..) )+import GHC.Exts (IsList (toList))+import GHC.Hs.Extension (GhcPs)+import GHC.Parser ( parseModule )+import GHC.Parser.Lexer+ ( ParserOpts,+ P(unP),+ ParseResult(..),+ getPsErrorMessages,+ initParserState )+import GHC.Tc.Types ( TcM )+import GHC.Types.Name ( occNameString )+import GHC.Types.Name.Reader ( RdrName(Unqual) ) import GHC.Types.SrcLoc-import GHC.Utils.Outputable hiding ((<>))+ ( GenLocated(L), mkRealSrcLoc, realSrcSpanStart, srcLocLine )+import GHC.Utils.Outputable+ ( Outputable(ppr), defaultSDocContext, renderWithContext ) import Language.Haskell.Syntax import Language.Haskell.TH.Syntax (Q (..), runIO, getQ, putQ, Loc (..), Lift, reportWarning) import Language.Preprocessor.Cpphs (runCpphs, defaultCpphsOptions)-import Unsafe.Coerce+import Unsafe.Coerce ( unsafeCoerce ) +#if MIN_VERSION_base(4,21,0)+import GHC.Parser.Annotation (epaLocationRealSrcSpan, SrcSpanAnnA, EpAnn(entry, EpAnn) )+#else+import GHC.Parser.Annotation (anchor, SrcSpanAnnA, EpAnn(entry, EpAnn))+import GHC.Types.SrcLoc (EpaLocation', RealSrcSpan)+epaLocationRealSrcSpan :: EpaLocation' a -> RealSrcSpan+epaLocationRealSrcSpan = anchor+#endif newtype FunName = FunName { unFunName :: String } deriving (Show, Eq, Ord, IsString, Lift) type LineFileIndex = IM.IntMap FunName@@ -46,6 +59,17 @@ getLineFileIndex :: Loc -> Q LineFileIndex getLineFileIndex = getLineFileIndex' . loc_filename +indexEntry :: EpAnn ann -> GenLocated l RdrName -> [(Int, FunName)]+indexEntry EpAnn {entry} = \case+ L _ fi ->+ case fi of+ Unqual s ->+ [ ( srcLocLine (realSrcSpanStart (epaLocationRealSrcSpan entry))+ , FunName $ occNameString s+ )+ ]+ _ -> []+ mkLineFunIndex :: FilePath -> Q LineFileIndex mkLineFunIndex fp = do fileContent <- runIO (runCpphs defaultCpphsOptions fp =<< readFile fp)@@ -60,26 +84,15 @@ "\n--------------------------------------------------------------------" pure mempty where- indexEntry EpAnn {entry} = \case- L _ fi ->- case fi of- Unqual s ->- [ ( srcLocLine (realSrcSpanStart (anchor entry))- , FunName $ occNameString s- )- ]- _ -> []- methodExtract (L l (FunBind {fun_id})) = indexEntry l fun_id methodExtract _ = []-+ extract :: GenLocated SrcSpanAnnA (HsDecl GhcPs) -> [(IM.Key, FunName)] extract (L l (ValD _ (FunBind {fun_id}))) = indexEntry l fun_id extract (L _ (InstD _ (ClsInstD {cid_inst}))) = case cid_inst of- ClsInstDecl {cid_binds} -> concatMap methodExtract (bagToList cid_binds)- _ -> []+ ClsInstDecl {cid_binds} -> concatMap methodExtract (toList cid_binds) extract (L _ (TyClD _ (ClassDecl {tcdMeths}))) =- concatMap methodExtract (bagToList tcdMeths)+ concatMap methodExtract (toList tcdMeths) extract _ = [] runParser :: FilePath -> ParserOpts -> String -> P a -> ParseResult a
src/Debug/TraceEmbrace/Internal/Rewrap.hs view
@@ -1,7 +1,3 @@-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE PolyKinds #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE FunctionalDependencies #-} module Debug.TraceEmbrace.Internal.Rewrap where
src/Debug/TraceEmbrace/Show.hs view
@@ -1,7 +1,3 @@-{-# LANGUAGE DefaultSignatures #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE PolyKinds #-} {-# LANGUAGE UnboxedSums #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE UnliftedNewtypes #-}
src/Debug/TraceEmbrace/ShowTh.hs view
@@ -1,7 +1,3 @@-{-# LANGUAGE DefaultSignatures #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE PolyKinds #-} {-# LANGUAGE UnboxedSums #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE UnliftedNewtypes #-}
test/Debug/TraceEmbrace/Test/TraceEmbrace/Yaml.hs view
@@ -2,11 +2,14 @@ {-# LANGUAGE OverloadedStrings #-} module Debug.TraceEmbrace.Test.TraceEmbrace.Yaml where -import Data.Text-import Data.Yaml as Y+import Data.Text (Text, pack)+import Data.Yaml as Y ( decodeEither', encode ) import Debug.TraceEmbrace.Config.Type.Level import Test.Tasty.HUnit ((@=?)) import Test.Tasty.QuickCheck+ ( Arbitrary(arbitrary),+ UnicodeString(getUnicodeString),+ arbitraryBoundedEnum ) instance Arbitrary TraceLevel where arbitrary = arbitraryBoundedEnum
test/Demo.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE CPP #-} -- | File combines samples which are important for FileIndex -- such us top functions, method instances and default methods@@ -6,6 +5,7 @@ #if !MIN_VERSION_base(4,8,0) #endif+ (***) :: Int -> Int -> Int
trace-embrace.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: trace-embrace-version: 1.1.0+version: 1.2.0 license: BSD-3-Clause license-file: LICENSE category: Development@@ -343,30 +343,47 @@ Module:fun: 7 get; x#: 1# tested-with:- GHC == 9.10.1+ GHC == 9.10.1, GHC == 9.12.2 extra-doc-files: changelog.md-library++common base+ ghc-options: -Wall+ default-language: GHC2024+ default-extensions:+ DefaultSignatures+ DuplicateRecordFields+ FunctionalDependencies+ MagicHash+ OverloadedLabels+ TemplateHaskell+ TypeFamilyDependencies build-depends:- aeson < 3.0,+ aeson < 3, base < 5,- bytestring > 0.11 && < 0.12.3,+ bytestring >= 0.11 && < 0.12.3, containers < 0.9,- cpphs < 2.0,- deepseq < 1.8,- directory < 2.0,- lens < 6.0,+ directory < 2,+ lens < 6, lrucache < 1.3,- generic-lens < 3.0,- ghc < 9.12,- haddock-use-refs < 2.0,- radix-tree < 2.0,- refined < 1.0,- tagged < 1.0,- template-haskell < 2.24.0.0,- text < 3.0,- transformers < 1.0,- yaml < 0.12,+ generic-lens < 3,+ refined < 1,+ template-haskell < 2.24,+ text < 3,+ yaml < 0.12++library+ import: base+ hs-source-dirs: src+ build-depends:+ cpphs < 2,+ deepseq < 1.8,+ ghc < 9.13,+ haddock-use-refs < 2,+ radix-tree < 2,+ tagged < 1,+ transformers < 1+ exposed-modules: Debug.TraceEmbrace Debug.TraceEmbrace.ByteString@@ -385,31 +402,26 @@ Debug.TraceEmbrace.ShowTh Debug.TraceEmbrace.TH - ghc-options: -Wall- hs-source-dirs: src- default-language: Haskell2010- default-extensions:- BangPatterns- DataKinds- DeriveGeneric- DeriveLift- DisambiguateRecordFields- DuplicateRecordFields- FlexibleContexts- FlexibleInstances- ImportQualifiedPost- LambdaCase- MultiParamTypeClasses- OverloadedLabels- ScopedTypeVariables- StandaloneDeriving- TemplateHaskell- TypeApplications- TypeFamilies- test-suite test+ import: base type: exitcode-stdio-1.0 main-is: Driver.hs+ default-extensions:+ RecordWildCards+ autogen-modules:+ Paths_trace_embrace+ hs-source-dirs:+ test+ ghc-options: -Wall -rtsopts -threaded -main-is Driver+ build-depends:+ , filepath < 1.6+ , tasty+ , tasty-discover+ , tasty-hunit+ , tasty-quickcheck+ , temporary < 1.5+ , th-lock < 1+ , trace-embrace other-modules: Debug.TraceEmbrace.Test.TraceEmbrace.Config Debug.TraceEmbrace.Test.TraceEmbrace.DemoIndex@@ -425,44 +437,6 @@ Demo Discovery Paths_trace_embrace- autogen-modules:- Paths_trace_embrace- hs-source-dirs:- test- default-extensions:- BangPatterns- DisambiguateRecordFields- DuplicateRecordFields- FlexibleContexts- ImportQualifiedPost- LambdaCase- NamedFieldPuns- OverloadedLabels- RecordWildCards- ScopedTypeVariables- TemplateHaskell- ghc-options: -Wall -rtsopts -threaded -main-is Driver- build-depends:- base- , bytestring- , containers- , directory- , filepath < 1.6- , generic-lens- , lens- , lrucache < 1.3- , refined- , tasty- , tasty-discover- , tasty-hunit- , tasty-quickcheck- , template-haskell- , temporary < 1.5- , text- , th-lock < 1.0.0- , trace-embrace- , yaml- default-language: Haskell2010 source-repository head type: git