packages feed

hiedb 0.4.0.0 → 0.4.1.0

raw patch · 12 files changed

+183/−55 lines, 12 filesdep −ghc-api-compatdep ~algebraic-graphsdep ~ansi-terminaldep ~basePVP ok

version bump matches the API change (PVP)

Dependencies removed: ghc-api-compat

Dependency ranges changed: algebraic-graphs, ansi-terminal, base, terminal-size

API changes (from Hackage documentation)

+ HieDb.Compat: (<+>) :: SDoc -> SDoc -> SDoc
+ HieDb.Compat: IfaceTyCon :: IfExtName -> IfaceTyConInfo -> IfaceTyCon
+ HieDb.Compat: LlvmConfig :: [(String, LlvmTarget)] -> [(Int, String)] -> LlvmConfig
+ HieDb.Compat: NCU :: (forall c. () => (NameCache -> (NameCache, c)) -> IO c) -> NameCacheUpdater
+ HieDb.Compat: RealSrcSpan :: !RealSrcSpan -> SrcSpan
+ HieDb.Compat: UnhelpfulSpan :: !FastString -> SrcSpan
+ HieDb.Compat: [ifaceTyConInfo] :: IfaceTyCon -> IfaceTyConInfo
+ HieDb.Compat: [ifaceTyConName] :: IfaceTyCon -> IfExtName
+ HieDb.Compat: [llvmPasses] :: LlvmConfig -> [(Int, String)]
+ HieDb.Compat: [llvmTargets] :: LlvmConfig -> [(String, LlvmTarget)]
+ HieDb.Compat: [updateNameCache] :: NameCacheUpdater -> forall c. () => (NameCache -> (NameCache, c)) -> IO c
+ HieDb.Compat: data AvailInfo
+ HieDb.Compat: data DynFlags
+ HieDb.Compat: data FastString
+ HieDb.Compat: data Fingerprint
+ HieDb.Compat: data IfaceTyCon
+ HieDb.Compat: data IfaceType
+ HieDb.Compat: data LlvmConfig
+ HieDb.Compat: data Module
+ HieDb.Compat: data ModuleName
+ HieDb.Compat: data Name
+ HieDb.Compat: data NameCache
+ HieDb.Compat: data NameSpace
+ HieDb.Compat: data OccName
+ HieDb.Compat: data RealSrcSpan
+ HieDb.Compat: data SrcSpan
+ HieDb.Compat: dataName :: NameSpace
+ HieDb.Compat: defaultDynFlags :: Settings -> LlvmConfig -> DynFlags
+ HieDb.Compat: flLabel :: FieldLbl a -> FieldLabelString
+ HieDb.Compat: flSelector :: FieldLbl a -> a
+ HieDb.Compat: getFileHash :: FilePath -> IO Fingerprint
+ HieDb.Compat: hang :: SDoc -> Int -> SDoc -> SDoc
+ HieDb.Compat: hiePathToFS :: HiePath -> FastString
+ HieDb.Compat: initNameCache :: UniqSupply -> [Name] -> NameCache
+ HieDb.Compat: initSysTools :: String -> IO Settings
+ HieDb.Compat: isDataConNameSpace :: NameSpace -> Bool
+ HieDb.Compat: isTcClsNameSpace :: NameSpace -> Bool
+ HieDb.Compat: isTvNameSpace :: NameSpace -> Bool
+ HieDb.Compat: isVarNameSpace :: NameSpace -> Bool
+ HieDb.Compat: lookupOrigNameCache :: OrigNameCache -> Module -> OccName -> Maybe Name
+ HieDb.Compat: mkModule :: UnitId -> ModuleName -> Module
+ HieDb.Compat: mkModuleName :: String -> ModuleName
+ HieDb.Compat: mkOccName :: NameSpace -> String -> OccName
+ HieDb.Compat: mkRealSrcLoc :: FastString -> Int -> Int -> RealSrcLoc
+ HieDb.Compat: mkRealSrcSpan :: RealSrcLoc -> RealSrcLoc -> RealSrcSpan
+ HieDb.Compat: mkSplitUniqSupply :: Char -> IO UniqSupply
+ HieDb.Compat: mkVarOccFS :: FastString -> OccName
+ HieDb.Compat: moduleName :: Module -> ModuleName
+ HieDb.Compat: moduleNameString :: ModuleName -> String
+ HieDb.Compat: nameModule :: HasDebugCallStack => Name -> Module
+ HieDb.Compat: nameModule_maybe :: Name -> Maybe Module
+ HieDb.Compat: nameOccName :: Name -> OccName
+ HieDb.Compat: nameSrcSpan :: Name -> SrcSpan
+ HieDb.Compat: newtype NameCacheUpdater
+ HieDb.Compat: nsNames :: NameCache -> OrigNameCache
+ HieDb.Compat: occNameSpace :: OccName -> NameSpace
+ HieDb.Compat: occNameString :: OccName -> String
+ HieDb.Compat: pattern AvailFL :: FieldLabel -> AvailInfo
+ HieDb.Compat: pattern AvailName :: Name -> AvailInfo
+ HieDb.Compat: pattern AvailTC :: Name -> [Name] -> [FieldLabel] -> AvailInfo
+ HieDb.Compat: ppr :: Outputable a => a -> SDoc
+ HieDb.Compat: readHexFingerprint :: String -> Fingerprint
+ HieDb.Compat: showSDoc :: DynFlags -> SDoc -> String
+ HieDb.Compat: srcSpanEndCol :: RealSrcSpan -> Int
+ HieDb.Compat: srcSpanEndLine :: RealSrcSpan -> Int
+ HieDb.Compat: srcSpanStartCol :: RealSrcSpan -> Int
+ HieDb.Compat: srcSpanStartLine :: RealSrcSpan -> Int
+ HieDb.Compat: tcClsName :: NameSpace
+ HieDb.Compat: text :: String -> SDoc
+ HieDb.Compat: tvName :: NameSpace
+ HieDb.Compat: type HiePath = FastString
+ HieDb.Compat: unpackFS :: FastString -> String
+ HieDb.Compat: varName :: NameSpace

Files

CHANGELOG.md view
@@ -1,5 +1,10 @@ # Revision history for hiedb +## 0.4.1.0 -- 2021-06-29++* Support GHC 9.2 (@fendor)+* Remove `ghc-api-compat` dependency (@fendor)+ ## 0.4.0.0 -- 2021-06-29  * Index module exports
hiedb.cabal view
@@ -1,6 +1,6 @@ cabal-version:       2.4 name:                hiedb-version:             0.4.0.0+version:             0.4.1.0 synopsis:            Generates a references DB from .hie files description:         Tool and library to index and query a collection of `.hie` files bug-reports:         https://github.com/wz1000/HieDb/issues@@ -71,8 +71,6 @@                      , extra                      , ansi-terminal                      , terminal-size-  if impl(ghc >= 9.0)-    build-depends: ghc-api-compat  test-suite hiedb-tests   import:             common-options@@ -89,5 +87,3 @@                     , hspec                     , process                     , temporary-  if impl(ghc >= 9.0)-    build-depends: ghc-api-compat
src/HieDb/Compat.hs view
@@ -1,5 +1,5 @@ -{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP, PatternSynonyms, ViewPatterns #-} module HieDb.Compat (     nodeInfo'     , Unit@@ -7,12 +7,118 @@     , stringToUnit     , moduleUnit     , unhelpfulSpanFS-+    -- * Types re-exports+    , ModuleName+    , mkModuleName+    , moduleName+    , moduleNameString+    , Fingerprint+    , unpackFS+    , readHexFingerprint+    , getFileHash+    , NameSpace+    , OccName+    , mkOccName+    , nameOccName+    , occNameSpace+    , occNameString+    , mkVarOccFS+    , Name+    , nameSrcSpan+    , NameCacheUpdater(..)+    , NameCache+    , nsNames+    , initNameCache+    , lookupOrigNameCache+    , Module+    , mkModule+    , nameModule_maybe+    , nameModule+    , varName+    , isVarNameSpace+    , dataName+    , isDataConNameSpace+    , tcClsName+    , isTcClsNameSpace+    , tvName+    , isTvNameSpace+    , flLabel+    -- * Dynflags re-exports+    , DynFlags+    , defaultDynFlags+    , LlvmConfig(..)+    -- * AvailInfo+    , Avail.AvailInfo+    , pattern AvailName+    , pattern AvailFL+    , pattern AvailTC+    , flSelector+    -- * SrcSpan+    , SrcSpan(..)+    , RealSrcSpan+    , mkRealSrcLoc+    , mkRealSrcSpan+    , srcSpanStartLine+    , srcSpanStartCol+    , srcSpanEndLine+    , srcSpanEndCol+    , mkSplitUniqSupply+    -- * Systools+    , initSysTools+    -- * Hie Types+    , HiePath+    , hiePathToFS+    -- * Outputable+    , (<+>)+    , ppr+    , showSDoc+    , hang+    , text+    -- * FastString+    , FastString+    -- * IFace+    , IfaceType+    , IfaceTyCon(..) ) where  import Compat.HieTypes +#if __GLASGOW_HASKELL__ >= 900+import GHC.Data.FastString as FS+import GHC.Driver.Session+import GHC.Iface.Env+import GHC.Iface.Type+import GHC.SysTools+import qualified GHC.Types.Avail as Avail+import GHC.Types.FieldLabel+import GHC.Types.Name+import GHC.Types.Name.Cache+import GHC.Types.Unique.Supply+import GHC.Unit.Types+import GHC.Unit.Module.Name+import GHC.Utils.Fingerprint+#if __GLASGOW_HASKELL__ >= 902+import GHC.Driver.Ppr (showSDoc)+import GHC.Utils.Outputable (ppr, (<+>), hang, text)+#else+import GHC.Utils.Outputable (showSDoc, ppr, (<+>), hang, text)+#endif+#else+import DynFlags+import FastString+import Fingerprint+import FieldLabel import Module+import Name+import NameCache+import Outputable (showSDoc, ppr, (<+>), hang, text)+import IfaceEnv (NameCacheUpdater(..))+import IfaceType+import UniqSupply+import SrcLoc+import SysTools+import qualified Avail+#endif  #if __GLASGOW_HASKELL__ >= 900 import GHC.Types.SrcLoc@@ -53,6 +159,39 @@ unhelpfulSpanFS = id #endif -#if __GLASGOW_HASKELL__ >= 900+#if __GLASGOW_HASKELL__ < 902+type HiePath = FastString+#endif++hiePathToFS :: HiePath -> FastString+#if __GLASGOW_HASKELL__ >= 902+hiePathToFS (LexicalFastString fs) = fs #else+hiePathToFS fs = fs+#endif++{-# COMPLETE AvailTC, AvailName, AvailFL #-}++pattern AvailTC :: Name -> [Name] -> [FieldLabel] -> Avail.AvailInfo+#if __GLASGOW_HASKELL__ >= 902+pattern AvailTC n names pieces <- Avail.AvailTC n ((\gres -> foldr (\gre (names, pieces) -> case gre of+      Avail.NormalGreName name -> (name: names, pieces)+      Avail.FieldGreName label -> (names, label:pieces)) ([], []) gres) -> (names, pieces))+#else+pattern AvailTC n names pieces <- Avail.AvailTC n names pieces+#endif++pattern AvailName :: Name -> Avail.AvailInfo+#if __GLASGOW_HASKELL__ >= 902+pattern AvailName n <- Avail.Avail (Avail.NormalGreName n)+#else+pattern AvailName n <- Avail.Avail n+#endif++pattern AvailFL :: FieldLabel -> Avail.AvailInfo+#if __GLASGOW_HASKELL__ >= 902+pattern AvailFL fl <- Avail.Avail (Avail.FieldGreName fl)+#else+-- pattern synonym that is never populated+pattern AvailFL x <- Avail.Avail ((\_ -> (True, undefined)) -> (False, x)) #endif
src/HieDb/Create.hs view
@@ -12,9 +12,6 @@ import Compat.HieUtils  import GHC-import IfaceType-import Name-import GHC.Fingerprint  import Control.Exception import Control.Monad@@ -32,10 +29,9 @@  import Database.SQLite.Simple -import HieDb.Compat+import HieDb.Compat as Compat import HieDb.Types import HieDb.Utils-import FastString  as FS      ( FastString )  sCHEMA_VERSION :: Integer sCHEMA_VERSION = 6@@ -196,7 +192,7 @@   where     arr :: A.Array TypeIndex HieTypeFlat     arr = hie_types hf-    asts :: M.Map FS.FastString (HieAST TypeIndex)+    asts :: M.Map HiePath (HieAST TypeIndex)     asts = getAsts $ hie_asts hf     addTypesFromAst :: HieAST TypeIndex -> IO ()     addTypesFromAst ast = do
src/HieDb/Dump.hs view
@@ -7,12 +7,11 @@ import qualified Data.Map.Strict as Map import qualified Data.Text as T import qualified Data.Text.Encoding as T-import qualified Outputable  import           Compat.HieTypes (HieFile (..)) import           Control.Monad.IO.Class (MonadIO, liftIO) import           Data.Text (Text)-import           DynFlags (DynFlags)+import           HieDb.Compat import           HieDb.Types (NameCacheMonad) import           HieDb.Utils (withHieFile) @@ -25,7 +24,7 @@ dump dynFlags hieFilePath = do   withHieFile hieFilePath $ \HieFile{ hie_asts } -> do     let (_, astRoot) = Map.findMin $ HieTypes.getAsts hie_asts-    liftIO $ putStrLn $ Outputable.showSDoc dynFlags $ HieDebug.ppHie astRoot+    liftIO $ putStrLn $ showSDoc dynFlags $ HieDebug.ppHie astRoot  {-| Get lines of original source code from given .hie file -} sourceCode :: (NameCacheMonad m, MonadIO m) => FilePath -> m [Text]
src/HieDb/Html.hs view
@@ -14,7 +14,8 @@ import           Data.Text   (Text) import qualified Data.Text as T import           Lucid-import           Module++import           HieDb.Compat  generate :: FilePath -> ModuleName -> [Text] -> [Span] -> IO () generate fp mn ts sps = renderToFile fp $ doctypehtml_ $ do
src/HieDb/Query.hs view
@@ -12,8 +12,6 @@  import           GHC import           Compat.HieTypes--- import           Module-import           Name  import           System.Directory import           System.FilePath@@ -30,7 +28,7 @@ import qualified Data.Text as T import           Data.IORef -import Database.SQLite.Simple+import           Database.SQLite.Simple  import           HieDb.Dump (sourceCode) import           HieDb.Compat
src/HieDb/Run.hs view
@@ -12,12 +12,7 @@ import GHC import Compat.HieTypes import Compat.HieUtils-import Name-import Outputable ((<+>),hang,showSDoc,ppr,text)-import IfaceType (IfaceType) -import qualified FastString as FS- import qualified Data.Map as M  import qualified Data.Text.IO as T@@ -412,7 +407,7 @@                    ,Just $ Left $ defSrc row                    )]               Nothing -> do-                reportAmbiguousErr opts $ Left $ NameUnhelpfulSpan name (FS.unpackFS $ unhelpfulSpanFS msg)+                reportAmbiguousErr opts $ Left $ NameUnhelpfulSpan name (unpackFS $ unhelpfulSpanFS msg)     InfoAtPoint target sp mep -> hieFileCommand conn opts target $ \hf -> do       mapM_ (uncurry $ printInfo dynFlags) $ pointCommand hf sp mep $ \ast ->         (hieTypeToIface . flip recoverFullType (hie_types hf) <$> nodeInfo' ast, nodeSpan ast)
src/HieDb/Types.hs view
@@ -11,12 +11,6 @@  import Prelude hiding (mod) -import Name-import Module-import NameCache-import Fingerprint--import IfaceEnv (NameCacheUpdater(..)) import Data.IORef  import qualified Data.Text as T
src/HieDb/Utils.hs view
@@ -17,17 +17,8 @@ import Compat.HieTypes import qualified Compat.HieTypes as HieTypes import Compat.HieUtils-import Name-import Module-import NameCache-import UniqSupply-import SrcLoc-import DynFlags-import SysTools- import qualified Data.Map as M -import qualified FastString as FS  import System.Directory import System.FilePath@@ -47,8 +38,6 @@ import HieDb.Types import HieDb.Compat import Database.SQLite.Simple-import Avail-import DataCon (flLabel)  addTypeRef :: HieDb -> FilePath -> A.Array TypeIndex HieTypeFlat -> A.Array TypeIndex (Maybe Int64) -> RealSrcSpan -> TypeIndex -> IO () addTypeRef (getConn -> conn) hf arr ixs sp = go 0@@ -127,13 +116,13 @@ #else       RealSrcSpan sp -> Right (sp, mdl) #endif-      UnhelpfulSpan msg -> Left $ NameUnhelpfulSpan name (FS.unpackFS $ unhelpfulSpanFS msg)+      UnhelpfulSpan msg -> Left $ NameUnhelpfulSpan name (unpackFS $ unhelpfulSpanFS msg)     Nothing -> Left $ NameNotFound occ (Just $ moduleName mdl) (Just $ moduleUnit mdl)  pointCommand :: HieFile -> (Int, Int) -> Maybe (Int, Int) -> (HieAST TypeIndex -> a) -> [a] pointCommand hf (sl,sc) mep k =     M.elems $ flip M.mapMaybeWithKey (getAsts $ hie_asts hf) $ \fs ast ->-      k <$> selectSmallestContaining (sp fs) ast+      k <$> selectSmallestContaining (sp $ hiePathToFS fs) ast  where    sloc fs = mkRealSrcLoc fs sl sc    eloc fs = case mep of@@ -246,7 +235,7 @@ generateExports :: FilePath -> [AvailInfo] -> [ExportRow] generateExports fp = concatMap generateExport where   generateExport :: AvailInfo -> [ExportRow]-  generateExport (Avail n)+  generateExport (AvailName n)     = [ExportRow         { exportHieFile = fp         , exportName = nameOccName n@@ -257,6 +246,23 @@         , exportParentUnit = Nothing         , exportIsDatacon = False         }]+  generateExport (AvailFL fl)+    = [ExportRow+        { exportHieFile = fp+        , exportName = n+        , exportMod = m+        , exportUnit = u+        , exportParent = Nothing+        , exportParentMod = Nothing+        , exportParentUnit = Nothing+        , exportIsDatacon = False+        }]+      where+        (n, m, u) = (mkVarOccFS $ flLabel fl+                    -- For fields, the module details come from the parent+                    ,moduleName $ nameModule $ flSelector fl+                    ,moduleUnit $ nameModule $ flSelector fl+                    )   generateExport (AvailTC name pieces fields)     = ExportRow         { exportHieFile = fp
test/Main.hs view
@@ -7,8 +7,7 @@ import HieDb.Run (Command (..), Options (..), runCommand) import HieDb.Types (HieDbErr (..), SourceFile(..), runDbM) import HieDb.Utils (makeNc)-import HieDb.Compat (stringToUnit)-import Module (mkModuleName, moduleNameString)+import HieDb.Compat (stringToUnit, moduleNameString, mkModuleName, getFileHash) import System.Directory (findExecutable, getCurrentDirectory, removeDirectoryRecursive) import System.Exit (ExitCode (..), die) import System.FilePath ((</>))@@ -19,7 +18,6 @@ import Test.Hspec (Expectation, Spec, afterAll_, around, beforeAll_, describe, hspec, it, runIO,                    shouldBe, shouldEndWith) import Test.Orphans ()-import GHC.Fingerprint import Data.IORef import Data.List (sort) import Data.Maybe (fromMaybe)@@ -216,7 +214,9 @@         runHieDbCli ["point-info", "Module1", "10", "10"]           `succeedsWithStdin` unlines             [ "Span: test/data/Module1.hs:10:8-11"-#if __GLASGOW_HASKELL__ >= 900+#if __GLASGOW_HASKELL__ >= 902+            , "Constructors: {(XExpr, HsExpr), (HsVar, HsExpr)}"+#elif __GLASGOW_HASKELL__ >= 900             , "Constructors: {(HsVar, HsExpr), (XExpr, HsExpr)}" #else             , "Constructors: {(HsVar, HsExpr), (HsWrap, HsExpr)}"
test/Test/Orphans.hs view
@@ -1,14 +1,13 @@-{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE StandaloneDeriving, CPP #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.Orphans where  import HieDb.Compat import HieDb.Types-import Module (ModuleName, moduleName, moduleNameString)-import Name (Name, nameModule, nameOccName)-import OccName (OccName, occNameString) +#if __GLASGOW_HASKELL__ < 902 instance Show ModuleName where show = moduleNameString+#endif instance Show OccName where show = occNameString instance Show Name where   show n =