ghc-9.8.2: GHC/Iface/Errors/Types.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
module GHC.Iface.Errors.Types (
MissingInterfaceError(..)
, InterfaceLookingFor(..)
, IfaceMessage(..)
, ReadInterfaceError(..)
, CantFindInstalled(..)
, CantFindInstalledReason(..)
, FindingModuleOrInterface(..)
, BuildingCabalPackage(..)
, IfaceMessageOpts(..)
) where
import GHC.Prelude
import GHC.Types.Name (Name)
import GHC.Types.TyThing (TyThing)
import GHC.Unit.Types (Module, InstalledModule, UnitId, Unit)
import GHC.Unit.State (UnitState, ModuleSuggestion, ModuleOrigin, UnusableUnit, UnitInfo)
import GHC.Exception.Type (SomeException)
import GHC.Unit.Types ( IsBootInterface )
import Language.Haskell.Syntax.Module.Name ( ModuleName )
import GHC.Generics ( Generic )
import GHC.Unit.Module.Location
data IfaceMessageOpts = IfaceMessageOpts { ifaceShowTriedFiles :: !Bool -- ^ Whether to show files we tried to look for or not when printing loader errors
, ifaceBuildingCabalPackage :: !BuildingCabalPackage
}
data InterfaceLookingFor
= LookingForName !Name
| LookingForHiBoot !Module
| LookingForModule !ModuleName !IsBootInterface
| LookingForSig !InstalledModule
data IfaceMessage
= Can'tFindInterface
MissingInterfaceError
InterfaceLookingFor
| Can'tFindNameInInterface
Name
[TyThing] -- possibly relevant TyThings
| CircularImport !Module
deriving Generic
data MissingInterfaceError
= BadSourceImport !Module
| HomeModError !InstalledModule !ModLocation
| DynamicHashMismatchError !Module !ModLocation
| CantFindErr !UnitState FindingModuleOrInterface CantFindInstalled
| BadIfaceFile ReadInterfaceError
| FailedToLoadDynamicInterface Module ReadInterfaceError
deriving Generic
data ReadInterfaceError
= ExceptionOccurred FilePath SomeException
| HiModuleNameMismatchWarn FilePath Module Module
deriving Generic
data CantFindInstalledReason
= NoUnitIdMatching UnitId [UnitInfo]
| MissingPackageFiles UnitId [FilePath]
| MissingPackageWayFiles String UnitId [FilePath]
| ModuleSuggestion [ModuleSuggestion] [FilePath]
| NotAModule
| CouldntFindInFiles [FilePath]
| GenericMissing
[(Unit, Maybe UnitInfo)] [Unit]
[UnusableUnit] [FilePath]
| MultiplePackages [(Module, ModuleOrigin)]
deriving Generic
data CantFindInstalled =
CantFindInstalled ModuleName CantFindInstalledReason
deriving Generic
data FindingModuleOrInterface = FindingModule
| FindingInterface
-- | Pass to a 'DriverMessage' the information whether or not the
-- '-fbuilding-cabal-package' flag is set.
data BuildingCabalPackage
= YesBuildingCabalPackage
| NoBuildingCabalPackage
deriving Eq