packages feed

ghc-9.14.1: GHC/Unit/Module/ModNodeKey.hs

module GHC.Unit.Module.ModNodeKey
  ( ModNodeKeyWithUid(..)
  , mnkToModule
  , moduleToMnk
  , mnkIsBoot
  , mnkToInstalledModule
  , installedModuleToMnk
  ) where

import GHC.Prelude
import GHC.Utils.Outputable
import GHC.Unit.Types

data ModNodeKeyWithUid = ModNodeKeyWithUid { mnkModuleName :: !ModuleNameWithIsBoot
                                           , mnkUnitId     :: !UnitId } deriving (Eq, Ord)

mnkToModule :: ModNodeKeyWithUid -> Module
mnkToModule (ModNodeKeyWithUid mnwib uid) = Module (RealUnit (Definite uid)) (gwib_mod mnwib)

mnkToInstalledModule :: ModNodeKeyWithUid -> InstalledModule
mnkToInstalledModule (ModNodeKeyWithUid mnwib uid) = Module uid (gwib_mod mnwib)

-- | Already InstalledModules are always NotBoot
installedModuleToMnk :: InstalledModule -> ModNodeKeyWithUid
installedModuleToMnk mod = ModNodeKeyWithUid (GWIB (moduleName mod) NotBoot) (moduleUnit mod)

moduleToMnk :: Module -> IsBootInterface -> ModNodeKeyWithUid
moduleToMnk mod is_boot = ModNodeKeyWithUid (GWIB (moduleName mod) is_boot) (moduleUnitId mod)

mnkIsBoot :: ModNodeKeyWithUid -> IsBootInterface
mnkIsBoot (ModNodeKeyWithUid mnwib _) = gwib_isBoot mnwib

instance Outputable ModNodeKeyWithUid where
  ppr (ModNodeKeyWithUid mnwib uid) = ppr uid <> colon <> ppr mnwib