From 5b0e7e92c7f101775a7ac88f380af0e31c396889 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Tue, 23 Aug 2022 00:08:04 -0400 Subject: [PATCH 1/5] Update hls-retrie-plugin to be usable with 9.2.4. This is the first pass at getting hls-retrie-plugin enabled. Much of the changes were updating to match the changes in the upstream `retrie` package. --- ghcide/src/Development/IDE/GHC/Compat/Core.hs | 8 ++ haskell-language-server.cabal | 2 +- .../hls-retrie-plugin/hls-retrie-plugin.cabal | 3 +- .../src/Ide/Plugin/Retrie.hs | 89 +++++++++++-------- 4 files changed, 63 insertions(+), 39 deletions(-) diff --git a/ghcide/src/Development/IDE/GHC/Compat/Core.hs b/ghcide/src/Development/IDE/GHC/Compat/Core.hs index 222be572e6..71a05a5c73 100644 --- a/ghcide/src/Development/IDE/GHC/Compat/Core.hs +++ b/ghcide/src/Development/IDE/GHC/Compat/Core.hs @@ -205,6 +205,7 @@ module Development.IDE.GHC.Compat.Core ( getLocA, locA, noLocA, + unLocA, LocatedAn, #if MIN_VERSION_ghc(9,2,0) GHC.AnnListItem(..), @@ -1044,6 +1045,13 @@ locA = GHC.locA locA = id #endif +#if MIN_VERSION_ghc(9,2,0) +unLocA :: forall pass a. XRec (GhcPass pass) a -> a +unLocA = unXRec @(GhcPass pass) +#else +unLocA = id +#endif + #if MIN_VERSION_ghc(9,2,0) getLocA :: SrcLoc.GenLocated (SrcSpanAnn' a) e -> SrcSpan getLocA = GHC.getLocA diff --git a/haskell-language-server.cabal b/haskell-language-server.cabal index d786e71530..bb92ceac25 100644 --- a/haskell-language-server.cabal +++ b/haskell-language-server.cabal @@ -275,7 +275,7 @@ common rename cpp-options: -Dhls_rename common retrie - if flag(retrie) && (impl(ghc < 9.2.1) || flag(ignore-plugins-ghc-bounds)) + if flag(retrie) build-depends: hls-retrie-plugin ^>= 1.0 cpp-options: -Dhls_retrie diff --git a/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal b/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal index 3313ffe610..0be48c5092 100644 --- a/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal +++ b/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: hls-retrie-plugin -version: 1.0.2.1 +version: 1.0.2.2 synopsis: Retrie integration plugin for Haskell Language Server description: Please see the README on GitHub at @@ -25,6 +25,7 @@ library , extra , ghc , ghcide ^>=1.7 + , ghc-paths , hashable , hls-plugin-api ^>=1.4 , lsp diff --git a/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs b/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs index 91ac93d59f..5819a7fda8 100644 --- a/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs +++ b/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs @@ -11,12 +11,12 @@ {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE ViewPatterns #-} {-# OPTIONS -Wno-orphans #-} module Ide.Plugin.Retrie (descriptor) where -import Control.Concurrent.Extra (readVar) import Control.Concurrent.STM (readTVarIO) import Control.Exception.Safe (Exception (..), SomeException, catch, @@ -29,11 +29,8 @@ import Control.Monad.Trans.Except (ExceptT (ExceptT), import Control.Monad.Trans.Maybe import Data.Aeson (FromJSON (..), ToJSON (..), - Value (Null), - genericParseJSON) -import qualified Data.Aeson as Aeson -import Data.Bifunctor (Bifunctor (first), - second) + Value (Null)) +import Data.Bifunctor (second) import qualified Data.ByteString as BS import Data.Coerce import Data.Either (partitionEithers) @@ -43,7 +40,7 @@ import qualified Data.HashSet as Set import Data.IORef.Extra (atomicModifyIORef'_, newIORef, readIORef) import Data.List.Extra (find, nubOrdOn) -import Data.String (IsString (fromString)) +import Data.String (IsString) import qualified Data.Text as T import qualified Data.Text.Encoding as T import Data.Typeable (Typeable) @@ -51,37 +48,39 @@ import Development.IDE hiding (pluginHandlers) import Development.IDE.Core.PositionMapping import Development.IDE.Core.Shake (ShakeExtras (knownTargetsVar), toKnownFiles) -import Development.IDE.GHC.Compat (GenLocated (L), GhcRn, +import Development.IDE.GHC.Compat (GenLocated (L), GhcPs, + GhcRn, GhcTc, HsBindLR (FunBind), HsGroup (..), HsValBindsLR (..), HscEnv, IdP, LRuleDecls, ModSummary (ModSummary, ms_hspp_buf, ms_mod), - NHsValBindsLR (..), Outputable, ParsedModule (..), RuleDecl (HsRule), RuleDecls (HsRules), SourceText (..), - SrcSpan (..), TyClDecl (SynDecl), TyClGroup (..), fun_id, hm_iface, isQual, - isQual_maybe, + isQual_maybe, locA, mi_fixities, moduleNameString, nameModule_maybe, - nameRdrName, occNameFS, - occNameString, - parseModule, + nameRdrName, noLocA, + occNameFS, occNameString, pattern IsBoot, pattern NotBoot, pattern RealSrcSpan, + pm_parsed_source, rdrNameOcc, rds_rules, - srcSpanFile) + srcSpanFile, unLocA) import Development.IDE.GHC.Compat.Util hiding (catch, try) -import qualified GHC (parseModule) +import qualified GHC (Module, + ParsedModule (..), + moduleName, parseModule) import GHC.Generics (Generic) +import GHC.Paths (libdir) import Ide.PluginUtils import Ide.Types import Language.LSP.Server (LspM, @@ -94,8 +93,13 @@ import Language.LSP.Types as J hiding SemanticTokenRelative (length), SemanticTokensEdit (_start)) import Retrie.CPP (CPP (NoCPP), parseCPP) -import Retrie.ExactPrint (fix, relativiseApiAnns, +import Retrie.ExactPrint (Annotated, fix, transformA, unsafeMkA) +#if MIN_VERSION_ghc(9,2,0) +import Retrie.ExactPrint (makeDeltaAst) +#else +import Retrie.ExactPrint (relativiseApiAnns) +#endif import Retrie.Fixity (mkFixityEnv) import qualified Retrie.GHC as GHC import Retrie.Monad (addImports, apply, @@ -202,7 +206,7 @@ provider state plId (CodeActionParams _ _ (TextDocumentIdentifier uri) range ca) ++ concatMap (suggestRuleRewrites uri pos ms_mod) hs_ruleds ++ [ r | TyClGroup {group_tyclds} <- hs_tyclds, - L l g <- group_tyclds, + L (locA -> l) g <- group_tyclds, pos `isInsideSrcSpan` l, r <- suggestTypeRewrites uri ms_mod g @@ -225,7 +229,7 @@ getBinds nfp = runMaybeT $ do ( HsGroup { hs_valds = XValBindsLR - (NValBinds binds _sigs :: NHsValBindsLR GHC.GhcRn), + (GHC.NValBinds binds _sigs :: GHC.NHsValBindsLR GhcRn), hs_ruleds, hs_tyclds }, @@ -247,7 +251,7 @@ suggestBindRewrites :: GHC.Module -> HsBindLR GhcRn GhcRn -> [(T.Text, CodeActionKind, RunRetrieParams)] -suggestBindRewrites originatingFile pos ms_mod FunBind {fun_id = L l' rdrName} +suggestBindRewrites originatingFile pos ms_mod FunBind {fun_id = L (locA -> l') rdrName} | pos `isInsideSrcSpan` l' = let pprNameText = printOutputable rdrName pprName = T.unpack pprNameText @@ -267,13 +271,13 @@ describeRestriction restrictToOriginatingFile = if restrictToOriginatingFile then " in current file" else "" suggestTypeRewrites :: - (Outputable (IdP pass)) => + (Outputable (IdP GhcRn)) => Uri -> GHC.Module -> - TyClDecl pass -> + TyClDecl GhcRn -> [(T.Text, CodeActionKind, RunRetrieParams)] -suggestTypeRewrites originatingFile ms_mod SynDecl {tcdLName = L _ rdrName} = - let pprNameText = printOutputable rdrName +suggestTypeRewrites originatingFile ms_mod SynDecl {tcdLName} = + let pprNameText = printOutputable (unLocA tcdLName) pprName = T.unpack pprNameText unfoldRewrite restrictToOriginatingFile = let rewrites = [TypeForward (qualify ms_mod pprName)] @@ -290,7 +294,7 @@ suggestRuleRewrites :: Uri -> Position -> GHC.Module -> - LRuleDecls pass -> + LRuleDecls GhcRn -> [(T.Text, CodeActionKind, RunRetrieParams)] suggestRuleRewrites originatingFile pos ms_mod (L _ HsRules {rds_rules}) = concat @@ -299,7 +303,7 @@ suggestRuleRewrites originatingFile pos ms_mod (L _ HsRules {rds_rules}) = , backwardsRewrite ruleName True , backwardsRewrite ruleName False ] - | L l r <- rds_rules, + | L (locA -> l) r <- rds_rules, pos `isInsideSrcSpan` l, #if MIN_VERSION_ghc(8,8,0) let HsRule {rd_name = L _ (_, rn)} = r, @@ -327,8 +331,6 @@ suggestRuleRewrites originatingFile pos ms_mod (L _ HsRules {rds_rules}) = RunRetrieParams {..} ) -suggestRuleRewrites _ _ _ _ = [] - qualify :: GHC.Module -> String -> String qualify ms_mod x = T.unpack (printOutputable ms_mod) <> "." <> x @@ -360,10 +362,9 @@ callRetrie :: callRetrie state session rewrites origin restrictToOriginatingFile = do knownFiles <- toKnownFiles . unhashed <$> readTVarIO (knownTargetsVar $ shakeExtras state) let reuseParsedModule f = do - pm <- - useOrFail "GetParsedModule" NoParse GetParsedModule f - (fixities, pm) <- fixFixities f (fixAnns pm) - return (fixities, pm) + pm <- useOrFail "GetParsedModule" NoParse GetParsedModule f + (fixities, pm') <- fixFixities f (fixAnns pm) + return (fixities, pm') getCPPmodule t = do nt <- toNormalizedFilePath' <$> makeAbsolute t let getParsedModule f contents = do @@ -375,8 +376,7 @@ callRetrie state session rewrites origin restrictToOriginatingFile = do Just (stringToStringBuffer contents) } logPriority (ideLogger state) Info $ T.pack $ "Parsing module: " <> t - parsed <- - evalGhcEnv session (GHC.parseModule ms') + parsed <- evalGhcEnv session (GHC.parseModule ms') `catch` \e -> throwIO (GHCParseError nt (show @SomeException e)) (fixities, parsed) <- fixFixities f (fixAnns parsed) return (fixities, parsed) @@ -416,12 +416,19 @@ callRetrie state session rewrites origin restrictToOriginatingFile = do (theImports, theRewrites) = partitionEithers rewrites annotatedImports = - unsafeMkA (map (GHC.noLoc . toImportDecl) theImports) mempty 0 +#if MIN_VERSION_ghc(9,2,0) + unsafeMkA (map (noLocA . toImportDecl) theImports) 0 +#else + unsafeMkA (map (noLocA . toImportDecl) theImports) mempty 0 +#endif (originFixities, originParsedModule) <- reuseParsedModule origin retrie <- (\specs -> apply specs >> addImports annotatedImports) <$> parseRewriteSpecs +#if MIN_VERSION_ghc(9,2,0) + libdir -- TODO: does this actualy get the proper libdir? +#endif (\_f -> return $ NoCPP originParsedModule) originFixities theRewrites @@ -463,9 +470,13 @@ callRetrie state session rewrites origin restrictToOriginatingFile = do let fixities = fixityEnvFromModIface hirModIface res <- transformA pm (fix fixities) return (fixities, res) - fixAnns ParsedModule {..} = +#if MIN_VERSION_ghc(9,2,0) + fixAnns GHC.ParsedModule{pm_parsed_source} = unsafeMkA (makeDeltaAst pm_parsed_source) 0 +#else + fixAnns GHC.ParsedModule {..} = let ranns = relativiseApiAnns pm_parsed_source pm_annotations in unsafeMkA pm_parsed_source ranns 0 +#endif asEditMap :: [[(Uri, TextEdit)]] -> WorkspaceEditMap asEditMap = coerce . HM.fromListWith (++) . concatMap (map (second pure)) @@ -533,14 +544,18 @@ toImportDecl :: ImportSpec -> GHC.ImportDecl GHC.GhcPs toImportDecl AddImport {..} = GHC.ImportDecl {ideclSource = ideclSource', ..} where ideclSource' = if ideclSource then IsBoot else NotBoot - toMod = GHC.noLoc . GHC.mkModuleName + toMod = noLocA . GHC.mkModuleName ideclName = toMod ideclNameString ideclPkgQual = Nothing ideclSafe = False ideclImplicit = False ideclHiding = Nothing ideclSourceSrc = NoSourceText +#if MIN_VERSION_ghc(9,2,0) + ideclExt = GHC.EpAnnNotUsed +#else ideclExt = GHC.noExtField +#endif ideclAs = toMod <$> ideclAsString #if MIN_VERSION_ghc(8,10,0) ideclQualified = if ideclQualifiedBool then GHC.QualifiedPre else GHC.NotQualified From 868ebedcb016298ed2fa2e4a8f14411ee1a9a869 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Wed, 24 Aug 2022 14:50:27 -0400 Subject: [PATCH 2/5] Replace GHC.Paths.libdir by querying a ModSummary for the LibDir --- .../hls-retrie-plugin/hls-retrie-plugin.cabal | 1 - .../hls-retrie-plugin/src/Ide/Plugin/Retrie.hs | 16 +++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal b/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal index 0be48c5092..c8ccec22ba 100644 --- a/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal +++ b/plugins/hls-retrie-plugin/hls-retrie-plugin.cabal @@ -25,7 +25,6 @@ library , extra , ghc , ghcide ^>=1.7 - , ghc-paths , hashable , hls-plugin-api ^>=1.4 , lsp diff --git a/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs b/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs index 5819a7fda8..4c3c51f43c 100644 --- a/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs +++ b/plugins/hls-retrie-plugin/src/Ide/Plugin/Retrie.hs @@ -66,6 +66,7 @@ import Development.IDE.GHC.Compat (GenLocated (L), GhcPs, isQual_maybe, locA, mi_fixities, moduleNameString, + ms_hspp_opts, nameModule_maybe, nameRdrName, noLocA, occNameFS, occNameString, @@ -74,13 +75,13 @@ import Development.IDE.GHC.Compat (GenLocated (L), GhcPs, pattern RealSrcSpan, pm_parsed_source, rdrNameOcc, rds_rules, - srcSpanFile, unLocA) + srcSpanFile, topDir, + unLocA) import Development.IDE.GHC.Compat.Util hiding (catch, try) import qualified GHC (Module, ParsedModule (..), moduleName, parseModule) import GHC.Generics (Generic) -import GHC.Paths (libdir) import Ide.PluginUtils import Ide.Types import Language.LSP.Server (LspM, @@ -330,6 +331,7 @@ suggestRuleRewrites originatingFile pos ms_mod (L _ HsRules {rds_rules}) = CodeActionRefactor, RunRetrieParams {..} ) +suggestRuleRewrites _ _ _ _ = [] qualify :: GHC.Module -> String -> String qualify ms_mod x = T.unpack (printOutputable ms_mod) <> "." <> x @@ -361,15 +363,19 @@ callRetrie :: IO ([CallRetrieError], WorkspaceEdit) callRetrie state session rewrites origin restrictToOriginatingFile = do knownFiles <- toKnownFiles . unhashed <$> readTVarIO (knownTargetsVar $ shakeExtras state) +#if MIN_VERSION_ghc(9,2,0) + -- retrie needs the libdir for `parseRewriteSpecs` + libdir <- topDir . ms_hspp_opts . msrModSummary <$> useOrFail "Retrie.GetModSummary" (CallRetrieInternalError "file not found") GetModSummary origin +#endif let reuseParsedModule f = do - pm <- useOrFail "GetParsedModule" NoParse GetParsedModule f + pm <- useOrFail "Retrie.GetParsedModule" NoParse GetParsedModule f (fixities, pm') <- fixFixities f (fixAnns pm) return (fixities, pm') getCPPmodule t = do nt <- toNormalizedFilePath' <$> makeAbsolute t let getParsedModule f contents = do modSummary <- msrModSummary <$> - useOrFail "GetModSummary" (CallRetrieInternalError "file not found") GetModSummary nt + useOrFail "Retrie.GetModSummary" (CallRetrieInternalError "file not found") GetModSummary nt let ms' = modSummary { ms_hspp_buf = @@ -427,7 +433,7 @@ callRetrie state session rewrites origin restrictToOriginatingFile = do (\specs -> apply specs >> addImports annotatedImports) <$> parseRewriteSpecs #if MIN_VERSION_ghc(9,2,0) - libdir -- TODO: does this actualy get the proper libdir? + libdir #endif (\_f -> return $ NoCPP originParsedModule) originFixities From 4f6eee5a6fd0239066f5d711f43c555040d48c72 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Wed, 31 Aug 2022 20:12:06 -0400 Subject: [PATCH 3/5] Looks like formatting was missed --- ghcide/src/Development/IDE/Core/Shake.hs | 2 +- .../src/Development/IDE/Plugin/Completions.hs | 47 +++++++------- hls-plugin-api/src/Ide/Types.hs | 6 +- .../src/Ide/Plugin/CodeRange/Rules.hs | 61 ++++++++++--------- .../src/Development/IDE/GHC/Dump.hs | 10 +-- plugins/hls-refactor-plugin/test/Main.hs | 26 ++++---- .../src/Ide/Plugin/Rename.hs | 6 +- 7 files changed, 79 insertions(+), 79 deletions(-) diff --git a/ghcide/src/Development/IDE/Core/Shake.hs b/ghcide/src/Development/IDE/Core/Shake.hs index 211c5468a2..98607aa617 100644 --- a/ghcide/src/Development/IDE/Core/Shake.hs +++ b/ghcide/src/Development/IDE/Core/Shake.hs @@ -158,7 +158,7 @@ import GHC.Stack (HasCallStack) import HieDb.Types import Ide.Plugin.Config import qualified Ide.PluginUtils as HLS -import Ide.Types (PluginId, IdePlugins) +import Ide.Types (IdePlugins, PluginId) import Language.LSP.Diagnostics import qualified Language.LSP.Server as LSP import Language.LSP.Types diff --git a/ghcide/src/Development/IDE/Plugin/Completions.hs b/ghcide/src/Development/IDE/Plugin/Completions.hs index 8e95614a27..4a02d94bf9 100644 --- a/ghcide/src/Development/IDE/Plugin/Completions.hs +++ b/ghcide/src/Development/IDE/Plugin/Completions.hs @@ -8,46 +8,45 @@ module Development.IDE.Plugin.Completions , ghcideCompletionsPluginPriority ) where -import Control.Concurrent.Async (concurrently) -import Control.Concurrent.STM.Stats (readTVarIO) +import Control.Concurrent.Async (concurrently) +import Control.Concurrent.STM.Stats (readTVarIO) import Control.Monad.Extra import Control.Monad.IO.Class import Control.Monad.Trans.Maybe import Data.Aeson -import qualified Data.HashMap.Strict as Map -import qualified Data.HashSet as Set -import Data.List (find) +import qualified Data.HashMap.Strict as Map +import qualified Data.HashSet as Set +import Data.List (find) import Data.Maybe -import qualified Data.Text as T +import qualified Data.Text as T import Development.IDE.Core.PositionMapping import Development.IDE.Core.RuleTypes -import Development.IDE.Core.Service hiding (Log, - LogShake) -import Development.IDE.Core.Shake hiding (Log) -import qualified Development.IDE.Core.Shake as Shake +import Development.IDE.Core.Service hiding (Log, LogShake) +import Development.IDE.Core.Shake hiding (Log) +import qualified Development.IDE.Core.Shake as Shake import Development.IDE.GHC.Compat -import Development.IDE.GHC.Error (rangeToSrcSpan) -import Development.IDE.GHC.Util (printOutputable) +import Development.IDE.GHC.Error (rangeToSrcSpan) +import Development.IDE.GHC.Util (printOutputable) import Development.IDE.Graph import Development.IDE.Plugin.Completions.Logic import Development.IDE.Plugin.Completions.Types import Development.IDE.Types.Exports -import Development.IDE.Types.HscEnvEq (HscEnvEq (envPackageExports), - hscEnv) -import qualified Development.IDE.Types.KnownTargets as KT +import Development.IDE.Types.HscEnvEq (HscEnvEq (envPackageExports), + hscEnv) +import qualified Development.IDE.Types.KnownTargets as KT import Development.IDE.Types.Location -import Development.IDE.Types.Logger (Pretty (pretty), - Recorder, - WithPriority, - cmapWithPrio) -import GHC.Exts (fromList, toList) -import Ide.Plugin.Config (Config) +import Development.IDE.Types.Logger (Pretty (pretty), + Recorder, + WithPriority, + cmapWithPrio) +import GHC.Exts (fromList, toList) +import Ide.Plugin.Config (Config) import Ide.Types -import qualified Language.LSP.Server as LSP +import qualified Language.LSP.Server as LSP import Language.LSP.Types -import qualified Language.LSP.VFS as VFS +import qualified Language.LSP.VFS as VFS import Numeric.Natural -import Text.Fuzzy.Parallel (Scored (..)) +import Text.Fuzzy.Parallel (Scored (..)) data Log = LogShake Shake.Log deriving Show diff --git a/hls-plugin-api/src/Ide/Types.hs b/hls-plugin-api/src/Ide/Types.hs index e9fbe8a28d..997300900a 100644 --- a/hls-plugin-api/src/Ide/Types.hs +++ b/hls-plugin-api/src/Ide/Types.hs @@ -56,6 +56,7 @@ import Control.Monad (void) import qualified System.Posix.Process as P (getProcessID) import System.Posix.Signals #endif +import Control.Applicative ((<|>)) import Control.Arrow ((&&&)) import Control.Lens ((^.)) import Data.Aeson hiding (defaultOptions) @@ -67,7 +68,7 @@ import Data.GADT.Compare import Data.Hashable (Hashable) import Data.HashMap.Strict (HashMap) import qualified Data.HashMap.Strict as HashMap -import Data.List.Extra (sortOn, find) +import Data.List.Extra (find, sortOn) import Data.List.NonEmpty (NonEmpty (..), toList) import qualified Data.Map as Map import Data.Maybe @@ -107,12 +108,11 @@ import Options.Applicative (ParserInfo) import System.FilePath import System.IO.Unsafe import Text.Regex.TDFA.Text () -import Control.Applicative ((<|>)) -- --------------------------------------------------------------------- data IdePlugins ideState = IdePlugins_ - { ipMap_ :: HashMap PluginId (PluginDescriptor ideState) + { ipMap_ :: HashMap PluginId (PluginDescriptor ideState) , lookupCommandProvider :: CommandId -> Maybe PluginId } diff --git a/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs b/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs index fcd96ffea1..87b61f2fc8 100644 --- a/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs +++ b/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs @@ -23,41 +23,42 @@ module Ide.Plugin.CodeRange.Rules , simplify ) where -import Control.DeepSeq (NFData) -import qualified Control.Lens as Lens -import Control.Monad (foldM) -import Control.Monad.Except (ExceptT (..), runExceptT) -import Control.Monad.Reader (runReader) -import Control.Monad.Trans.Class (lift) -import Control.Monad.Trans.Maybe (MaybeT (MaybeT), - maybeToExceptT) +import Control.DeepSeq (NFData) +import qualified Control.Lens as Lens +import Control.Monad (foldM) +import Control.Monad.Except (ExceptT (..), + runExceptT) +import Control.Monad.Reader (runReader) +import Control.Monad.Trans.Class (lift) +import Control.Monad.Trans.Maybe (MaybeT (MaybeT), + maybeToExceptT) import Control.Monad.Trans.Writer.CPS -import Data.Coerce (coerce) -import Data.Data (Typeable) -import Data.Foldable (traverse_) -import Data.Function (on, (&)) +import Data.Coerce (coerce) +import Data.Data (Typeable) +import Data.Foldable (traverse_) +import Data.Function (on, (&)) import Data.Hashable -import Data.List (sort) -import qualified Data.Map.Strict as Map -import Data.Vector (Vector) -import qualified Data.Vector as V +import Data.List (sort) +import qualified Data.Map.Strict as Map +import Data.Vector (Vector) +import qualified Data.Vector as V import Development.IDE -import Development.IDE.Core.Rules (toIdeResult) -import qualified Development.IDE.Core.Shake as Shake +import Development.IDE.Core.Rules (toIdeResult) +import qualified Development.IDE.Core.Shake as Shake +import Development.IDE.GHC.Compat (HieAST (..), + HieASTs (getAsts), + ParsedSource, RefMap) import Development.IDE.GHC.Compat.ExactPrint (Annotated) -import Development.IDE.GHC.Compat (HieAST (..), - HieASTs (getAsts), - ParsedSource, RefMap) import Development.IDE.GHC.Compat.Util -import Development.IDE.GHC.ExactPrint (GetAnnotatedParsedSource (GetAnnotatedParsedSource)) -import GHC.Generics (Generic) -import Ide.Plugin.CodeRange.ASTPreProcess (CustomNodeType (..), - PreProcessEnv (..), - isCustomNode, - preProcessAST) -import Language.LSP.Types.Lens (HasEnd (end), - HasStart (start)) -import Prelude hiding (log) +import Development.IDE.GHC.ExactPrint (GetAnnotatedParsedSource (GetAnnotatedParsedSource)) +import GHC.Generics (Generic) +import Ide.Plugin.CodeRange.ASTPreProcess (CustomNodeType (..), + PreProcessEnv (..), + isCustomNode, + preProcessAST) +import Language.LSP.Types.Lens (HasEnd (end), + HasStart (start)) +import Prelude hiding (log) data Log = LogShake Shake.Log | LogNoAST diff --git a/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs b/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs index abaaa81cfb..f79fa7acd5 100644 --- a/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs +++ b/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs @@ -1,7 +1,7 @@ {-# LANGUAGE CPP #-} module Development.IDE.GHC.Dump(showAstDataHtml) where -import Data.Data hiding (Fixity) -import Development.IDE.GHC.Compat hiding (NameAnn) +import Data.Data hiding (Fixity) +import Development.IDE.GHC.Compat hiding (NameAnn) import Development.IDE.GHC.Compat.ExactPrint #if MIN_VERSION_ghc(8,10,1) import GHC.Hs.Dump @@ -9,9 +9,9 @@ import GHC.Hs.Dump import HsDumpAst #endif #if MIN_VERSION_ghc(9,2,1) -import qualified Data.ByteString as B +import qualified Data.ByteString as B import Development.IDE.GHC.Compat.Util -import Generics.SYB (ext1Q, ext2Q, extQ) +import Generics.SYB (ext1Q, ext2Q, extQ) import GHC.Hs #endif #if MIN_VERSION_ghc(9,0,1) @@ -19,7 +19,7 @@ import GHC.Plugins #else import GhcPlugins #endif -import Prelude hiding ((<>)) +import Prelude hiding ((<>)) -- | Show a GHC syntax tree in HTML. #if MIN_VERSION_ghc(9,2,1) diff --git a/plugins/hls-refactor-plugin/test/Main.hs b/plugins/hls-refactor-plugin/test/Main.hs index dafbd1e843..2a81b9085e 100644 --- a/plugins/hls-refactor-plugin/test/Main.hs +++ b/plugins/hls-refactor-plugin/test/Main.hs @@ -1,17 +1,17 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE ImplicitParams #-} +{-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE PolyKinds #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-deprecations -Wno-unticked-promoted-constructors #-} module Main @@ -19,34 +19,34 @@ module Main ) where import Control.Applicative.Combinators +import Control.Lens ((^.)) import Control.Monad import Data.Default import Data.Foldable import Data.List.Extra import Data.Maybe import qualified Data.Text as T -import Development.IDE.Test +import Data.Tuple.Extra import Development.IDE.GHC.Util import Development.IDE.Plugin.Completions.Types (extendImportCommandId) +import Development.IDE.Test import Development.IDE.Types.Location import Development.Shake (getDirectoryFilesIO) +import Ide.Types import Language.LSP.Test import Language.LSP.Types hiding (SemanticTokenAbsolute (length, line), SemanticTokenRelative (length), SemanticTokensEdit (_start), mkRange) -import qualified Language.LSP.Types.Lens as L +import qualified Language.LSP.Types as LSP import Language.LSP.Types.Capabilities +import qualified Language.LSP.Types.Lens as L import System.Directory import System.FilePath import System.Info.Extra (isMac, isWindows) import qualified System.IO.Extra import System.IO.Extra hiding (withTempDir) -import Control.Lens ((^.)) -import Data.Tuple.Extra -import Ide.Types -import qualified Language.LSP.Types as LSP import System.Time.Extra import Test.Tasty import Test.Tasty.ExpectedFailure @@ -54,11 +54,11 @@ import Test.Tasty.HUnit import Text.Regex.TDFA ((=~)) -import Test.Hls import Development.IDE.Plugin.CodeAction (matchRegExMultipleImports) +import Test.Hls -import qualified Development.IDE.Plugin.CodeAction as Refactor -import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde +import qualified Development.IDE.Plugin.CodeAction as Refactor +import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde main :: IO () main = defaultTestRunner tests diff --git a/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs b/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs index c6c1238b61..8a22172a67 100644 --- a/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs +++ b/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs @@ -29,7 +29,7 @@ import qualified Data.Map as M import Data.Maybe import Data.Mod.Word import qualified Data.Text as T -import Development.IDE (Recorder, WithPriority) +import Development.IDE (Recorder, WithPriority) import Development.IDE.Core.PositionMapping import Development.IDE.Core.RuleTypes import Development.IDE.Core.Service @@ -40,10 +40,10 @@ import Development.IDE.GHC.Compat.Parser import Development.IDE.GHC.Compat.Units import Development.IDE.GHC.Error import Development.IDE.GHC.ExactPrint -import qualified Development.IDE.GHC.ExactPrint as E +import qualified Development.IDE.GHC.ExactPrint as E +import Development.IDE.Plugin.CodeAction import Development.IDE.Spans.AtPoint import Development.IDE.Types.Location -import Development.IDE.Plugin.CodeAction import HieDb.Query import Ide.Plugin.Properties import Ide.PluginUtils From a60d4a21d91356b43151afdf54c58e8a3273e2fc Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Wed, 31 Aug 2022 23:22:49 -0400 Subject: [PATCH 4/5] Revert "Looks like formatting was missed" This reverts commit 4f6eee5a6fd0239066f5d711f43c555040d48c72. --- ghcide/src/Development/IDE/Core/Shake.hs | 2 +- .../src/Development/IDE/Plugin/Completions.hs | 47 +++++++------- hls-plugin-api/src/Ide/Types.hs | 6 +- .../src/Ide/Plugin/CodeRange/Rules.hs | 61 +++++++++---------- .../src/Development/IDE/GHC/Dump.hs | 10 +-- plugins/hls-refactor-plugin/test/Main.hs | 26 ++++---- .../src/Ide/Plugin/Rename.hs | 6 +- 7 files changed, 79 insertions(+), 79 deletions(-) diff --git a/ghcide/src/Development/IDE/Core/Shake.hs b/ghcide/src/Development/IDE/Core/Shake.hs index 98607aa617..211c5468a2 100644 --- a/ghcide/src/Development/IDE/Core/Shake.hs +++ b/ghcide/src/Development/IDE/Core/Shake.hs @@ -158,7 +158,7 @@ import GHC.Stack (HasCallStack) import HieDb.Types import Ide.Plugin.Config import qualified Ide.PluginUtils as HLS -import Ide.Types (IdePlugins, PluginId) +import Ide.Types (PluginId, IdePlugins) import Language.LSP.Diagnostics import qualified Language.LSP.Server as LSP import Language.LSP.Types diff --git a/ghcide/src/Development/IDE/Plugin/Completions.hs b/ghcide/src/Development/IDE/Plugin/Completions.hs index 4a02d94bf9..8e95614a27 100644 --- a/ghcide/src/Development/IDE/Plugin/Completions.hs +++ b/ghcide/src/Development/IDE/Plugin/Completions.hs @@ -8,45 +8,46 @@ module Development.IDE.Plugin.Completions , ghcideCompletionsPluginPriority ) where -import Control.Concurrent.Async (concurrently) -import Control.Concurrent.STM.Stats (readTVarIO) +import Control.Concurrent.Async (concurrently) +import Control.Concurrent.STM.Stats (readTVarIO) import Control.Monad.Extra import Control.Monad.IO.Class import Control.Monad.Trans.Maybe import Data.Aeson -import qualified Data.HashMap.Strict as Map -import qualified Data.HashSet as Set -import Data.List (find) +import qualified Data.HashMap.Strict as Map +import qualified Data.HashSet as Set +import Data.List (find) import Data.Maybe -import qualified Data.Text as T +import qualified Data.Text as T import Development.IDE.Core.PositionMapping import Development.IDE.Core.RuleTypes -import Development.IDE.Core.Service hiding (Log, LogShake) -import Development.IDE.Core.Shake hiding (Log) -import qualified Development.IDE.Core.Shake as Shake +import Development.IDE.Core.Service hiding (Log, + LogShake) +import Development.IDE.Core.Shake hiding (Log) +import qualified Development.IDE.Core.Shake as Shake import Development.IDE.GHC.Compat -import Development.IDE.GHC.Error (rangeToSrcSpan) -import Development.IDE.GHC.Util (printOutputable) +import Development.IDE.GHC.Error (rangeToSrcSpan) +import Development.IDE.GHC.Util (printOutputable) import Development.IDE.Graph import Development.IDE.Plugin.Completions.Logic import Development.IDE.Plugin.Completions.Types import Development.IDE.Types.Exports -import Development.IDE.Types.HscEnvEq (HscEnvEq (envPackageExports), - hscEnv) -import qualified Development.IDE.Types.KnownTargets as KT +import Development.IDE.Types.HscEnvEq (HscEnvEq (envPackageExports), + hscEnv) +import qualified Development.IDE.Types.KnownTargets as KT import Development.IDE.Types.Location -import Development.IDE.Types.Logger (Pretty (pretty), - Recorder, - WithPriority, - cmapWithPrio) -import GHC.Exts (fromList, toList) -import Ide.Plugin.Config (Config) +import Development.IDE.Types.Logger (Pretty (pretty), + Recorder, + WithPriority, + cmapWithPrio) +import GHC.Exts (fromList, toList) +import Ide.Plugin.Config (Config) import Ide.Types -import qualified Language.LSP.Server as LSP +import qualified Language.LSP.Server as LSP import Language.LSP.Types -import qualified Language.LSP.VFS as VFS +import qualified Language.LSP.VFS as VFS import Numeric.Natural -import Text.Fuzzy.Parallel (Scored (..)) +import Text.Fuzzy.Parallel (Scored (..)) data Log = LogShake Shake.Log deriving Show diff --git a/hls-plugin-api/src/Ide/Types.hs b/hls-plugin-api/src/Ide/Types.hs index 997300900a..e9fbe8a28d 100644 --- a/hls-plugin-api/src/Ide/Types.hs +++ b/hls-plugin-api/src/Ide/Types.hs @@ -56,7 +56,6 @@ import Control.Monad (void) import qualified System.Posix.Process as P (getProcessID) import System.Posix.Signals #endif -import Control.Applicative ((<|>)) import Control.Arrow ((&&&)) import Control.Lens ((^.)) import Data.Aeson hiding (defaultOptions) @@ -68,7 +67,7 @@ import Data.GADT.Compare import Data.Hashable (Hashable) import Data.HashMap.Strict (HashMap) import qualified Data.HashMap.Strict as HashMap -import Data.List.Extra (find, sortOn) +import Data.List.Extra (sortOn, find) import Data.List.NonEmpty (NonEmpty (..), toList) import qualified Data.Map as Map import Data.Maybe @@ -108,11 +107,12 @@ import Options.Applicative (ParserInfo) import System.FilePath import System.IO.Unsafe import Text.Regex.TDFA.Text () +import Control.Applicative ((<|>)) -- --------------------------------------------------------------------- data IdePlugins ideState = IdePlugins_ - { ipMap_ :: HashMap PluginId (PluginDescriptor ideState) + { ipMap_ :: HashMap PluginId (PluginDescriptor ideState) , lookupCommandProvider :: CommandId -> Maybe PluginId } diff --git a/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs b/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs index 87b61f2fc8..fcd96ffea1 100644 --- a/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs +++ b/plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange/Rules.hs @@ -23,42 +23,41 @@ module Ide.Plugin.CodeRange.Rules , simplify ) where -import Control.DeepSeq (NFData) -import qualified Control.Lens as Lens -import Control.Monad (foldM) -import Control.Monad.Except (ExceptT (..), - runExceptT) -import Control.Monad.Reader (runReader) -import Control.Monad.Trans.Class (lift) -import Control.Monad.Trans.Maybe (MaybeT (MaybeT), - maybeToExceptT) +import Control.DeepSeq (NFData) +import qualified Control.Lens as Lens +import Control.Monad (foldM) +import Control.Monad.Except (ExceptT (..), runExceptT) +import Control.Monad.Reader (runReader) +import Control.Monad.Trans.Class (lift) +import Control.Monad.Trans.Maybe (MaybeT (MaybeT), + maybeToExceptT) import Control.Monad.Trans.Writer.CPS -import Data.Coerce (coerce) -import Data.Data (Typeable) -import Data.Foldable (traverse_) -import Data.Function (on, (&)) +import Data.Coerce (coerce) +import Data.Data (Typeable) +import Data.Foldable (traverse_) +import Data.Function (on, (&)) import Data.Hashable -import Data.List (sort) -import qualified Data.Map.Strict as Map -import Data.Vector (Vector) -import qualified Data.Vector as V +import Data.List (sort) +import qualified Data.Map.Strict as Map +import Data.Vector (Vector) +import qualified Data.Vector as V import Development.IDE -import Development.IDE.Core.Rules (toIdeResult) -import qualified Development.IDE.Core.Shake as Shake -import Development.IDE.GHC.Compat (HieAST (..), - HieASTs (getAsts), - ParsedSource, RefMap) +import Development.IDE.Core.Rules (toIdeResult) +import qualified Development.IDE.Core.Shake as Shake import Development.IDE.GHC.Compat.ExactPrint (Annotated) +import Development.IDE.GHC.Compat (HieAST (..), + HieASTs (getAsts), + ParsedSource, RefMap) import Development.IDE.GHC.Compat.Util -import Development.IDE.GHC.ExactPrint (GetAnnotatedParsedSource (GetAnnotatedParsedSource)) -import GHC.Generics (Generic) -import Ide.Plugin.CodeRange.ASTPreProcess (CustomNodeType (..), - PreProcessEnv (..), - isCustomNode, - preProcessAST) -import Language.LSP.Types.Lens (HasEnd (end), - HasStart (start)) -import Prelude hiding (log) +import Development.IDE.GHC.ExactPrint (GetAnnotatedParsedSource (GetAnnotatedParsedSource)) +import GHC.Generics (Generic) +import Ide.Plugin.CodeRange.ASTPreProcess (CustomNodeType (..), + PreProcessEnv (..), + isCustomNode, + preProcessAST) +import Language.LSP.Types.Lens (HasEnd (end), + HasStart (start)) +import Prelude hiding (log) data Log = LogShake Shake.Log | LogNoAST diff --git a/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs b/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs index f79fa7acd5..abaaa81cfb 100644 --- a/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs +++ b/plugins/hls-refactor-plugin/src/Development/IDE/GHC/Dump.hs @@ -1,7 +1,7 @@ {-# LANGUAGE CPP #-} module Development.IDE.GHC.Dump(showAstDataHtml) where -import Data.Data hiding (Fixity) -import Development.IDE.GHC.Compat hiding (NameAnn) +import Data.Data hiding (Fixity) +import Development.IDE.GHC.Compat hiding (NameAnn) import Development.IDE.GHC.Compat.ExactPrint #if MIN_VERSION_ghc(8,10,1) import GHC.Hs.Dump @@ -9,9 +9,9 @@ import GHC.Hs.Dump import HsDumpAst #endif #if MIN_VERSION_ghc(9,2,1) -import qualified Data.ByteString as B +import qualified Data.ByteString as B import Development.IDE.GHC.Compat.Util -import Generics.SYB (ext1Q, ext2Q, extQ) +import Generics.SYB (ext1Q, ext2Q, extQ) import GHC.Hs #endif #if MIN_VERSION_ghc(9,0,1) @@ -19,7 +19,7 @@ import GHC.Plugins #else import GhcPlugins #endif -import Prelude hiding ((<>)) +import Prelude hiding ((<>)) -- | Show a GHC syntax tree in HTML. #if MIN_VERSION_ghc(9,2,1) diff --git a/plugins/hls-refactor-plugin/test/Main.hs b/plugins/hls-refactor-plugin/test/Main.hs index 2a81b9085e..dafbd1e843 100644 --- a/plugins/hls-refactor-plugin/test/Main.hs +++ b/plugins/hls-refactor-plugin/test/Main.hs @@ -1,17 +1,17 @@ +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE ImplicitParams #-} -{-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeOperators #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE RecordWildCards #-} {-# OPTIONS_GHC -Wno-deprecations -Wno-unticked-promoted-constructors #-} module Main @@ -19,34 +19,34 @@ module Main ) where import Control.Applicative.Combinators -import Control.Lens ((^.)) import Control.Monad import Data.Default import Data.Foldable import Data.List.Extra import Data.Maybe import qualified Data.Text as T -import Data.Tuple.Extra +import Development.IDE.Test import Development.IDE.GHC.Util import Development.IDE.Plugin.Completions.Types (extendImportCommandId) -import Development.IDE.Test import Development.IDE.Types.Location import Development.Shake (getDirectoryFilesIO) -import Ide.Types import Language.LSP.Test import Language.LSP.Types hiding (SemanticTokenAbsolute (length, line), SemanticTokenRelative (length), SemanticTokensEdit (_start), mkRange) -import qualified Language.LSP.Types as LSP -import Language.LSP.Types.Capabilities import qualified Language.LSP.Types.Lens as L +import Language.LSP.Types.Capabilities import System.Directory import System.FilePath import System.Info.Extra (isMac, isWindows) import qualified System.IO.Extra import System.IO.Extra hiding (withTempDir) +import Control.Lens ((^.)) +import Data.Tuple.Extra +import Ide.Types +import qualified Language.LSP.Types as LSP import System.Time.Extra import Test.Tasty import Test.Tasty.ExpectedFailure @@ -54,11 +54,11 @@ import Test.Tasty.HUnit import Text.Regex.TDFA ((=~)) -import Development.IDE.Plugin.CodeAction (matchRegExMultipleImports) import Test.Hls +import Development.IDE.Plugin.CodeAction (matchRegExMultipleImports) -import qualified Development.IDE.Plugin.CodeAction as Refactor -import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde +import qualified Development.IDE.Plugin.CodeAction as Refactor +import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde main :: IO () main = defaultTestRunner tests diff --git a/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs b/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs index 8a22172a67..c6c1238b61 100644 --- a/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs +++ b/plugins/hls-rename-plugin/src/Ide/Plugin/Rename.hs @@ -29,7 +29,7 @@ import qualified Data.Map as M import Data.Maybe import Data.Mod.Word import qualified Data.Text as T -import Development.IDE (Recorder, WithPriority) +import Development.IDE (Recorder, WithPriority) import Development.IDE.Core.PositionMapping import Development.IDE.Core.RuleTypes import Development.IDE.Core.Service @@ -40,10 +40,10 @@ import Development.IDE.GHC.Compat.Parser import Development.IDE.GHC.Compat.Units import Development.IDE.GHC.Error import Development.IDE.GHC.ExactPrint -import qualified Development.IDE.GHC.ExactPrint as E -import Development.IDE.Plugin.CodeAction +import qualified Development.IDE.GHC.ExactPrint as E import Development.IDE.Spans.AtPoint import Development.IDE.Types.Location +import Development.IDE.Plugin.CodeAction import HieDb.Query import Ide.Plugin.Properties import Ide.PluginUtils From 2acec5a3a2dacdf2469a75c86186a58cd0457ee1 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sat, 3 Sep 2022 11:50:09 -0400 Subject: [PATCH 5/5] Don't build retrie for 9.4 --- haskell-language-server.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haskell-language-server.cabal b/haskell-language-server.cabal index a3605e5b6b..afcf912123 100644 --- a/haskell-language-server.cabal +++ b/haskell-language-server.cabal @@ -274,7 +274,7 @@ common rename cpp-options: -Dhls_rename common retrie - if flag(retrie) + if flag(retrie) && (impl(ghc < 9.4.1) || flag(ignore-plugins-ghc-bounds)) build-depends: hls-retrie-plugin ^>= 1.0 cpp-options: -Dhls_retrie