ghcide-2.9.0.0: The core of an IDE

Safe Haskell | None
Language | GHC2021

Development.IDE

Synopsis

- module Development.IDE.Core.RuleTypes
- module Development.IDE.GHC.Error
- module Development.IDE.GHC.Util
- module Development.IDE.Plugin
- module Development.IDE.Types.Diagnostics
- module Development.IDE.Types.Location
- module Ide.Logger
- data RuleBody k v
  - = Rule (k -> NormalizedFilePath -> Action (Maybe ByteString, IdeResult v))
  - | RuleNoDiagnostics (k -> NormalizedFilePath -> Action (Maybe ByteString, Maybe v))
  - | RuleWithCustomNewnessCheck {
    - newnessCheck :: ByteString -> ByteString -> Bool
    - build :: k -> NormalizedFilePath -> Action (Maybe ByteString, Maybe v)
    }
  - | RuleWithOldValue (k -> NormalizedFilePath -> Value v -> Action (Maybe ByteString, IdeResult v))
- data IdeConfiguration = IdeConfiguration {
  - workspaceFolders :: HashSet NormalizedUri
  - clientSettings :: Hashed (Maybe Value)
  }
- use :: IdeRule k v => k -> NormalizedFilePath -> Action (Maybe v)
- ghcVersion :: GhcVersion
- data Action a
- data Rules a
- type family RuleResult key
- action :: Action a -> Rules ()
- getClientConfig :: MonadLsp Config m => m Config
- uses :: (Traversable f, IdeRule k v) => k -> f NormalizedFilePath -> Action (f (Maybe v))
- getAtPoint :: NormalizedFilePath -> Position -> IdeAction (Maybe (Maybe Range, [Text]))
- getDefinition :: NormalizedFilePath -> Position -> IdeAction (Maybe [Location])
- getTypeDefinition :: NormalizedFilePath -> Position -> IdeAction (Maybe [Location])
- getFileExists :: NormalizedFilePath -> Action Bool
- getFileContents :: NormalizedFilePath -> Action (UTCTime, Maybe Text)
- isWorkspaceFile :: NormalizedFilePath -> Action Bool
- getFilesOfInterestUntracked :: Action (HashMap NormalizedFilePath FileOfInterestStatus)
- getClientConfigAction :: Action Config
- getParsedModule :: NormalizedFilePath -> Action (Maybe ParsedModule)
- usePropertyAction :: forall (s :: Symbol) (k :: PropertyKey) (t :: PropertyType) (r :: [PropertyKey]). HasProperty s k t r => KeyNameProxy s -> PluginId -> Properties r -> Action (ToHsType t)
- runAction :: String -> IdeState -> Action a -> IO a
- data FastResult a = FastResult {
  - stale :: Maybe (a, PositionMapping)
  - uptoDate :: IO (Maybe a)
  }
- newtype IdeAction a = IdeAction {
  - runIdeActionT :: ReaderT ShakeExtras IO a
  }
- type IdeRule k v = (RuleResult k ~ v, ShakeValue k, Show v, Typeable v, NFData v)
- data IdeState
- data ShakeExtras
- data VFSModified
  - = VFSUnmodified
  - | VFSModified !VFS
- actionLogger :: Action (Recorder (WithPriority Log))
- define :: IdeRule k v => Recorder (WithPriority Log) -> (k -> NormalizedFilePath -> Action (IdeResult v)) -> Rules ()
- defineEarlyCutoff :: IdeRule k v => Recorder (WithPriority Log) -> RuleBody k v -> Rules ()
- defineNoDiagnostics :: IdeRule k v => Recorder (WithPriority Log) -> (k -> NormalizedFilePath -> Action (Maybe v)) -> Rules ()
- getPluginConfigAction :: PluginId -> Action PluginConfig
- ideLogger :: IdeState -> Recorder (WithPriority Log)
- runIdeAction :: String -> ShakeExtras -> IdeAction a -> IO a
- useNoFile :: IdeRule k v => k -> Action (Maybe v)
- useNoFile_ :: IdeRule k v => k -> Action v
- useWithStale :: IdeRule k v => k -> NormalizedFilePath -> Action (Maybe (v, PositionMapping))
- useWithStaleFast :: IdeRule k v => k -> NormalizedFilePath -> IdeAction (Maybe (v, PositionMapping))
- useWithStaleFast' :: IdeRule k v => k -> NormalizedFilePath -> IdeAction (FastResult v)
- useWithStale_ :: IdeRule k v => k -> NormalizedFilePath -> Action (v, PositionMapping)
- use_ :: IdeRule k v => k -> NormalizedFilePath -> Action v
- uses_ :: (Traversable f, IdeRule k v) => k -> f NormalizedFilePath -> Action (f v)
- data GhcVersion
  - = GHC92
  - | GHC94
  - | GHC96
  - | GHC98
  - | GHC910
- data HscEnvEq
- hscEnvWithImportPaths :: HscEnvEq -> HscEnv

# Documentation

module Development.IDE.Core.RuleTypes

module Development.IDE.GHC.Error

module Development.IDE.GHC.Util

module Development.IDE.Plugin

module Development.IDE.Types.Diagnostics

module Development.IDE.Types.Location

module Ide.Logger

data RuleBody k v #

Constructors

Rule (k -> NormalizedFilePath -> Action (Maybe ByteString, IdeResult v)) |
RuleNoDiagnostics (k -> NormalizedFilePath -> Action (Maybe ByteString, Maybe v)) |
RuleWithCustomNewnessCheck |
Fields newnessCheck :: ByteString -> ByteString -> Bool build :: k -> NormalizedFilePath -> Action (Maybe ByteString, Maybe v)
RuleWithOldValue (k -> NormalizedFilePath -> Value v -> Action (Maybe ByteString, IdeResult v)) |

data IdeConfiguration #

Lsp client relevant configuration details

Constructors

IdeConfiguration |
Fields workspaceFolders :: HashSet NormalizedUri clientSettings :: Hashed (Maybe Value)

#### Instances

Instances details

Show IdeConfiguration # |
Instance details Defined in Development.IDE.Core.IdeConfiguration Methods showsPrec :: Int -> IdeConfiguration -> ShowS # show :: IdeConfiguration -> String # showList :: [IdeConfiguration] -> ShowS #

use :: IdeRule k v => k -> NormalizedFilePath -> Action (Maybe v) #

Request a Rule result if available

ghcVersion :: GhcVersion #

data Action a #

An action representing something that can be run as part of a `Rule`.

`Action`s can be pure functions but also have access to `IO` via `MonadIO` and 'MonadUnliftIO. It should be assumed that actions throw exceptions, these can be caught with `actionCatch`. In particular, it is permissible to use the `MonadFail` instance, which will lead to an `IOException`.

#### Instances

Instances details

MonadIO Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods liftIO :: IO a -> Action a #
MonadCatch Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods catch :: (HasCallStack, Exception e) => Action a -> (e -> Action a) -> Action a #
MonadMask Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods mask :: HasCallStack => ((forall a. Action a -> Action a) -> Action b) -> Action b # uninterruptibleMask :: HasCallStack => ((forall a. Action a -> Action a) -> Action b) -> Action b # generalBracket :: HasCallStack => Action a -> (a -> ExitCase b -> Action c) -> (a -> Action b) -> Action (b, c) #
MonadThrow Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods throwM :: (HasCallStack, Exception e) => e -> Action a #
Applicative Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods pure :: a -> Action a # (<*>) :: Action (a -> b) -> Action a -> Action b # liftA2 :: (a -> b -> c) -> Action a -> Action b -> Action c # (*>) :: Action a -> Action b -> Action b # (<*) :: Action a -> Action b -> Action a #
Functor Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods fmap :: (a -> b) -> Action a -> Action b # (<$) :: a -> Action b -> Action a #
Monad Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods (>>=) :: Action a -> (a -> Action b) -> Action b # (>>) :: Action a -> Action b -> Action b # return :: a -> Action a #
MonadFail Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods fail :: String -> Action a #
MonadUnliftIO Action |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods withRunInIO :: ((forall a. Action a -> IO a) -> IO b) -> Action b #

data Rules a #

A computation that defines all the rules that form part of the computation graph.

`Rules` has access to `IO` through `MonadIO`. Use of `IO` is at your own risk: if you write `Rules` that throw exceptions, then you need to make sure to handle them yourself when you run the resulting `Rules`.

#### Instances

Instances details

MonadIO Rules |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods liftIO :: IO a -> Rules a #
Applicative Rules |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods pure :: a -> Rules a # (<*>) :: Rules (a -> b) -> Rules a -> Rules b # liftA2 :: (a -> b -> c) -> Rules a -> Rules b -> Rules c # (*>) :: Rules a -> Rules b -> Rules b # (<*) :: Rules a -> Rules b -> Rules a #
Functor Rules |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods fmap :: (a -> b) -> Rules a -> Rules b # (<$) :: a -> Rules b -> Rules a #
Monad Rules |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods (>>=) :: Rules a -> (a -> Rules b) -> Rules b # (>>) :: Rules a -> Rules b -> Rules b # return :: a -> Rules a #
Monoid a => Monoid (Rules a) |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods mempty :: Rules a # mappend :: Rules a -> Rules a -> Rules a # mconcat :: [Rules a] -> Rules a #
Semigroup a => Semigroup (Rules a) |
Instance details Defined in Development.IDE.Graph.Internal.Types Methods (<>) :: Rules a -> Rules a -> Rules a # sconcat :: NonEmpty (Rules a) -> Rules a # stimes :: Integral b => b -> Rules a -> Rules a #

type family RuleResult key #

The type mapping between the `key` or a rule and the resulting `value`.

#### Instances

Instances details

type RuleResult AddWatchedFile # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult AddWatchedFile = Bool
type RuleResult GenerateCore # | Convert to Core, requires TypeCheck*
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GenerateCore = ModGuts
type RuleResult GetBindings # | A IntervalMap telling us what is in scope at each point
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetBindings = Bindings
type RuleResult GetClientSettings # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetClientSettings = Hashed (Maybe Value)
type RuleResult GetDocMap # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetDocMap = DocAndTyThingMap
type RuleResult GetFileContents # | Get the contents of a file, either dirty (if the buffer is modified) or Nothing to mean use from disk.
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetFileContents = (FileVersion, Maybe Text)
type RuleResult GetFileExists # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetFileExists = Bool
type RuleResult GetHieAst # | The uncompressed HieAST
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetHieAst = HieAstResult
type RuleResult GetImportMap # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetImportMap = ImportMap
type RuleResult GetKnownTargets # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetKnownTargets = KnownTargets
type RuleResult GetLinkable # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetLinkable = LinkableResult
type RuleResult GetLocatedImports # | Resolve the imports in a module to the file path of a module in the same package
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetLocatedImports = [(Located ModuleName, Maybe ArtifactsLocation)]
type RuleResult GetModIface # | Get a module interface details, either from an interface file or a typechecked module
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetModIface = HiFileResult
type RuleResult GetModIfaceFromDisk # | Read the module interface file from disk. Throws an error for VFS files. This is an internal rule, use `GetModIface` instead.
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetModIfaceFromDisk = HiFileResult
type RuleResult GetModIfaceFromDiskAndIndex # | GetModIfaceFromDisk and index the `.hie` file into the database. This is an internal rule, use `GetModIface` instead.
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetModIfaceFromDiskAndIndex = HiFileResult
type RuleResult GetModSummary # | Generate a ModSummary that has enough information to be used to get .hi and .hie files. without needing to parse the entire source
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetModSummary = ModSummaryResult
type RuleResult GetModSummaryWithoutTimestamps # | Generate a ModSummary with the timestamps and preprocessed content elided, for more successful early cutoff
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetModSummaryWithoutTimestamps = ModSummaryResult
type RuleResult GetModificationTime # | Get the modification time of a file.
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetModificationTime = FileVersion
type RuleResult GetModuleGraph # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetModuleGraph = DependencyInformation
type RuleResult GetParsedModule # | The parse tree for the file using GetFileContents
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetParsedModule = ParsedModule
type RuleResult GetParsedModuleWithComments # | The parse tree for the file using GetFileContents, all comments included using Opt_KeepRawTokenStream
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GetParsedModuleWithComments = ParsedModule
type RuleResult GhcSession # | A GHC session that we reuse.
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GhcSession = HscEnvEq
type RuleResult GhcSessionDeps # | A GHC session preloaded with all the dependencies This rule is also responsible for calling ReportImportCycles for the direct dependencies
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GhcSessionDeps = HscEnvEq
type RuleResult GhcSessionIO # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult GhcSessionIO = IdeGhcSession
type RuleResult IsFileOfInterest # |
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult IsFileOfInterest = IsFileOfInterestResult
type RuleResult NeedsCompilation # | Does this module need to be compiled?
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult NeedsCompilation = Maybe LinkableType
type RuleResult ReportImportCycles # | This rule is used to report import cycles. It depends on GetModuleGraph. We cannot report the cycles directly from GetModuleGraph since we can only report diagnostics for the current file.
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult ReportImportCycles = ()
type RuleResult TypeCheck # | The type checked version of this file, requires TypeCheck+
Instance details Defined in Development.IDE.Core.RuleTypes type RuleResult TypeCheck = TcModuleResult
type RuleResult LocalCompletions # | Produce completions info for a file
Instance details Defined in Development.IDE.Plugin.Completions.Types type RuleResult LocalCompletions = CachedCompletions
type RuleResult NonLocalCompletions # |
Instance details Defined in Development.IDE.Plugin.Completions.Types type RuleResult NonLocalCompletions = CachedCompletions
type RuleResult GetGlobalBindingTypeSigs # |
Instance details Defined in Development.IDE.Plugin.TypeLenses type RuleResult GetGlobalBindingTypeSigs = GlobalBindingTypeSigsResult
type RuleResult (Q k) # |
Instance details Defined in Development.IDE.Types.Shake type RuleResult (Q k) = A (RuleResult k)

action :: Action a -> Rules () #

getClientConfig :: MonadLsp Config m => m Config #

Returns the current client configuration. It is not wise to permanently cache the returned value of this function, as clients can at runtime change their configuration.

uses :: (Traversable f, IdeRule k v) => k -> f NormalizedFilePath -> Action (f (Maybe v)) #

Plural version of `use`

getAtPoint :: NormalizedFilePath -> Position -> IdeAction (Maybe (Maybe Range, [Text])) #

Try to get hover text for the name under point.

getDefinition :: NormalizedFilePath -> Position -> IdeAction (Maybe [Location]) #

Goto Definition.

getTypeDefinition :: NormalizedFilePath -> Position -> IdeAction (Maybe [Location]) #

getFileExists :: NormalizedFilePath -> Action Bool #

Returns True if the file exists

getFileContents :: NormalizedFilePath -> Action (UTCTime, Maybe Text) #

Returns the modification time and the contents. For VFS paths, the modification time is the current time.

isWorkspaceFile :: NormalizedFilePath -> Action Bool #

getFilesOfInterestUntracked :: Action (HashMap NormalizedFilePath FileOfInterestStatus) #

getClientConfigAction :: Action Config #

Returns the client configuration, creating a build dependency. You should always use this function when accessing client configuration from build rules.

getParsedModule :: NormalizedFilePath -> Action (Maybe ParsedModule) #

Parse the contents of a haskell file.

usePropertyAction :: forall (s :: Symbol) (k :: PropertyKey) (t :: PropertyType) (r :: [PropertyKey]). HasProperty s k t r => KeyNameProxy s -> PluginId -> Properties r -> Action (ToHsType t) #

runAction :: String -> IdeState -> Action a -> IO a #

data FastResult a #

A (maybe) stale result now, and an up to date one later

Constructors

FastResult |
Fields stale :: Maybe (a, PositionMapping) uptoDate :: IO (Maybe a)

newtype IdeAction a #

IdeActions are used when we want to return a result immediately, even if it is stale Useful for UI actions like hover, completion where we don't want to block.

Run via `runIdeAction`.

Constructors

IdeAction |
Fields runIdeActionT :: ReaderT ShakeExtras IO a

#### Instances

Instances details

MonadIO IdeAction # |
Instance details Defined in Development.IDE.Core.Shake Methods liftIO :: IO a -> IdeAction a #
Applicative IdeAction # |
Instance details Defined in Development.IDE.Core.Shake Methods pure :: a -> IdeAction a # (<*>) :: IdeAction (a -> b) -> IdeAction a -> IdeAction b # liftA2 :: (a -> b -> c) -> IdeAction a -> IdeAction b -> IdeAction c # (*>) :: IdeAction a -> IdeAction b -> IdeAction b # (<*) :: IdeAction a -> IdeAction b -> IdeAction a #
Functor IdeAction # |
Instance details Defined in Development.IDE.Core.Shake Methods fmap :: (a -> b) -> IdeAction a -> IdeAction b # (<$) :: a -> IdeAction b -> IdeAction a #
Monad IdeAction # |
Instance details Defined in Development.IDE.Core.Shake Methods (>>=) :: IdeAction a -> (a -> IdeAction b) -> IdeAction b # (>>) :: IdeAction a -> IdeAction b -> IdeAction b # return :: a -> IdeAction a #
MonadReader ShakeExtras IdeAction # |
Instance details Defined in Development.IDE.Core.Shake Methods ask :: IdeAction ShakeExtras # local :: (ShakeExtras -> ShakeExtras) -> IdeAction a -> IdeAction a # reader :: (ShakeExtras -> a) -> IdeAction a #
Semigroup a => Semigroup (IdeAction a) # |
Instance details Defined in Development.IDE.Core.Shake Methods (<>) :: IdeAction a -> IdeAction a -> IdeAction a # sconcat :: NonEmpty (IdeAction a) -> IdeAction a # stimes :: Integral b => b -> IdeAction a -> IdeAction a #

type IdeRule k v = (RuleResult k ~ v, ShakeValue k, Show v, Typeable v, NFData v) #

data IdeState #

A Shake database plus persistent store. Can be thought of as storing mappings from `(FilePath, k)` to `RuleResult k`.

#### Instances

Instances details

MonadReader (ReactorChan, IdeState) (ServerM c) # |
Instance details Defined in Development.IDE.LSP.Server Methods ask :: ServerM c (ReactorChan, IdeState) # local :: ((ReactorChan, IdeState) -> (ReactorChan, IdeState)) -> ServerM c a -> ServerM c a # reader :: ((ReactorChan, IdeState) -> a) -> ServerM c a #

data ShakeExtras #

#### Instances

Instances details

MonadReader ShakeExtras IdeAction # |
Instance details Defined in Development.IDE.Core.Shake Methods ask :: IdeAction ShakeExtras # local :: (ShakeExtras -> ShakeExtras) -> IdeAction a -> IdeAction a # reader :: (ShakeExtras -> a) -> IdeAction a #

data VFSModified #

Constructors

VFSUnmodified |
VFSModified !VFS |

actionLogger :: Action (Recorder (WithPriority Log)) #

define :: IdeRule k v => Recorder (WithPriority Log) -> (k -> NormalizedFilePath -> Action (IdeResult v)) -> Rules () #

Define a new Rule without early cutoff

defineEarlyCutoff :: IdeRule k v => Recorder (WithPriority Log) -> RuleBody k v -> Rules () #

Define a new Rule with early cutoff

defineNoDiagnostics :: IdeRule k v => Recorder (WithPriority Log) -> (k -> NormalizedFilePath -> Action (Maybe v)) -> Rules () #

getPluginConfigAction :: PluginId -> Action PluginConfig #

ideLogger :: IdeState -> Recorder (WithPriority Log) #

runIdeAction :: String -> ShakeExtras -> IdeAction a -> IO a #

useNoFile :: IdeRule k v => k -> Action (Maybe v) #

useNoFile_ :: IdeRule k v => k -> Action v #

useWithStale :: IdeRule k v => k -> NormalizedFilePath -> Action (Maybe (v, PositionMapping)) #

Request a Rule result, it not available return the last computed result, if any, which may be stale

useWithStaleFast :: IdeRule k v => k -> NormalizedFilePath -> IdeAction (Maybe (v, PositionMapping)) #

Lookup value in the database and return with the stale value immediately Will queue an action to refresh the value. Might block the first time the rule runs, but never blocks after that.

useWithStaleFast' :: IdeRule k v => k -> NormalizedFilePath -> IdeAction (FastResult v) #

Same as useWithStaleFast but lets you wait for an up to date result

useWithStale_ :: IdeRule k v => k -> NormalizedFilePath -> Action (v, PositionMapping) #

Request a Rule result, it not available return the last computed result which may be stale.

Throws an `BadDependency` exception which is caught by the rule system if none available.

WARNING: Not suitable for PluginHandlers. Use `useWithStaleE` instead.

use_ :: IdeRule k v => k -> NormalizedFilePath -> Action v #

uses_ :: (Traversable f, IdeRule k v) => k -> f NormalizedFilePath -> Action (f v) #

Plural version of `use_`

Throws an `BadDependency` exception which is caught by the rule system if none available.

WARNING: Not suitable for PluginHandlers. Use `usesE` instead.

data GhcVersion #

Constructors

GHC92 |
GHC94 |
GHC96 |
GHC98 |
GHC910 |

#### Instances

Instances details

Enum GhcVersion # |
Instance details Defined in Development.IDE.GHC.Compat Methods succ :: GhcVersion -> GhcVersion # pred :: GhcVersion -> GhcVersion # toEnum :: Int -> GhcVersion # fromEnum :: GhcVersion -> Int # enumFrom :: GhcVersion -> [GhcVersion] # enumFromThen :: GhcVersion -> GhcVersion -> [GhcVersion] # enumFromTo :: GhcVersion -> GhcVersion -> [GhcVersion] # enumFromThenTo :: GhcVersion -> GhcVersion -> GhcVersion -> [GhcVersion] #
Show GhcVersion # |
Instance details Defined in Development.IDE.GHC.Compat Methods showsPrec :: Int -> GhcVersion -> ShowS # show :: GhcVersion -> String # showList :: [GhcVersion] -> ShowS #
Eq GhcVersion # |
Instance details Defined in Development.IDE.GHC.Compat Methods (==) :: GhcVersion -> GhcVersion -> Bool # (/=) :: GhcVersion -> GhcVersion -> Bool #
Ord GhcVersion # |
Instance details Defined in Development.IDE.GHC.Compat Methods compare :: GhcVersion -> GhcVersion -> Ordering # (<) :: GhcVersion -> GhcVersion -> Bool # (<=) :: GhcVersion -> GhcVersion -> Bool # (>) :: GhcVersion -> GhcVersion -> Bool # (>=) :: GhcVersion -> GhcVersion -> Bool # max :: GhcVersion -> GhcVersion -> GhcVersion # min :: GhcVersion -> GhcVersion -> GhcVersion #

data HscEnvEq #

An `HscEnv` with equality. Two values are considered equal if they are created with the same call to `newHscEnvEq` or `updateHscEnvEq`.

#### Instances

Instances details

NFData HscEnvEq # |
Instance details Defined in Development.IDE.Types.HscEnvEq Methods rnf :: HscEnvEq -> () #
Show HscEnvEq # |
Instance details Defined in Development.IDE.Types.HscEnvEq Methods showsPrec :: Int -> HscEnvEq -> ShowS # show :: HscEnvEq -> String # showList :: [HscEnvEq] -> ShowS #
Eq HscEnvEq # |
Instance details Defined in Development.IDE.Types.HscEnvEq Methods (==) :: HscEnvEq -> HscEnvEq -> Bool # (/=) :: HscEnvEq -> HscEnvEq -> Bool #
Hashable HscEnvEq # |
Instance details Defined in Development.IDE.Types.HscEnvEq Methods hashWithSalt :: Int -> HscEnvEq -> Int # hash :: HscEnvEq -> Int #

hscEnvWithImportPaths :: HscEnvEq -> HscEnv #

Unwrap the `HscEnv` with the original import paths. Used only for locating imports