packages feed

uhc-light-1.1.9.3: src/UHC/Light/Compiler/Gam/Utils.hs

module UHC.Light.Compiler.Gam.Utils
( mentrelFilterMpExtendViaValGam )
where
import Data.List
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Opts
import UHC.Light.Compiler.Ty
import UHC.Light.Compiler.Ty.FitsInCommon
import UHC.Light.Compiler.Ty.FitsIn
import UHC.Light.Compiler.Error
import UHC.Light.Compiler.Gam
import UHC.Light.Compiler.VarMp
import UHC.Light.Compiler.Substitutable
import qualified Data.Map as Map
import qualified Data.Set as Set
import UHC.Light.Compiler.Ty.UsedNames
import UHC.Light.Compiler.Module.ImportExport
import UHC.Light.Compiler.Gam.ValGam


{-# LINE 63 "src/ehc/Gam/Utils.chs" #-}
-- | Lookup indirectly used identifiers, type constants from types of value bindings.
mentrelFilterMpExtendViaValGam :: HsName -> ValGam -> ModEntRelFilterMp -> ModEntRelFilterMp
mentrelFilterMpExtendViaValGam moduleNm valGam mentrelFilterMp
  = mentrelFilterMpUnions
      (   [ mentrelFilterMp ]
       ++ [ maybe Map.empty (tyUsedNames moduleNm . vgiTy) $ valGamLookup n valGam
          | n <- Set.toList $ Map.findWithDefault Set.empty IdOcc_Val mentrelFilterMp
          ]
      )