ghc-check 0.5.0.5 → 0.5.0.6
raw patch · 2 files changed
+44/−3 lines, 2 filesdep +ghc-bootdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: ghc-boot
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- ghc-check.cabal +4/−1
- src/GHC/Check/PackageDb.hs +40/−2
ghc-check.cabal view
@@ -1,7 +1,7 @@ cabal-version: 1.20 build-type: Simple name: ghc-check-version: 0.5.0.5+version: 0.5.0.6 synopsis: detect mismatches between compile-time and run-time versions of the ghc api description: detect mismatches between compile-time and run-time versions of the ghc api bug-reports: https://github.com/pepeiborra/ghc-check/issues@@ -34,6 +34,9 @@ template-haskell, th-compat >= 0.1.2, transformers+ if impl(ghc >= 9.2)+ -- We need access to ShortText+ build-depends: ghc-boot hs-source-dirs: src ghc-options: -Wall default-language: Haskell2010
src/GHC/Check/PackageDb.hs view
@@ -20,8 +20,23 @@ import Language.Haskell.TH.Syntax (Lift) import Data.Foldable (find) import Control.Applicative (Alternative((<|>)))-#if MIN_VERSION_ghc(9,0,1)+#if MIN_VERSION_ghc(9,2,0) import GHC+ (Ghc,+ getSession,+ )+import GHC.Data.Maybe (MaybeT (MaybeT), runMaybeT)+import qualified GHC.Data.ShortText as ShortText+import GHC.Driver.Env (hsc_unit_env, )+import GHC.Unit.Info (PackageName (PackageName))+import GHC.Unit.Env (ue_units)+import GHC.Unit.State+ (lookupUnit, explicitUnits, lookupUnitId,+ lookupPackageName, GenericUnitInfo (..),+ UnitInfo, unitPackageNameString)+import GHC.Unit.Types (indefUnit)+#elif MIN_VERSION_ghc(9,0,1)+import GHC (unitState, Ghc, getSessionDynFlags, )@@ -62,7 +77,30 @@ version :: PackageVersion -> Version version PackageVersion{ myVersion = MyVersion v} = v -#if MIN_VERSION_ghc(9,0,1)+#if MIN_VERSION_ghc(9,2,0)+-- | @getPackageVersion p@ returns the version of package @p@ that will be used in the Ghc session.+getPackageVersion :: String -> Ghc (Maybe PackageVersion)+getPackageVersion pName = runMaybeT $ do+ hsc_env <- Monad.lift getSession+ let pkgst = ue_units $ hsc_unit_env hsc_env+ depends = explicitUnits pkgst++ let explicit = do+ pkgs <- traverse (MaybeT . return . lookupUnit pkgst) depends+ MaybeT $ return $ find (\p -> unitPackageNameString p == pName ) pkgs++ notExplicit = do+ component <- MaybeT $ return $ lookupPackageName pkgst $ PackageName $ fromString pName+ MaybeT $ return $ lookupUnitId pkgst (indefUnit component)++ p <- explicit <|> notExplicit++ return $ fromPackageConfig p++fromPackageConfig :: UnitInfo -> PackageVersion+fromPackageConfig p = PackageVersion (MyVersion $ unitPackageVersion p) (Just $ ShortText.unpack $ unitAbiHash p)++#elif MIN_VERSION_ghc(9,0,1) -- | @getPackageVersion p@ returns the version of package @p@ that will be used in the Ghc session. getPackageVersion :: String -> Ghc (Maybe PackageVersion) getPackageVersion pName = runMaybeT $ do