Skip to content

Commit 9fb0e43

Browse files
authored
Merge branch 'master' into ghc-927
2 parents 143c145 + eebf3b2 commit 9fb0e43

File tree

10 files changed

+45
-40
lines changed

10 files changed

+45
-40
lines changed

.github/workflows/nix.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ jobs:
103103
# We only build nix dev shell for current GHC version because some are
104104
# failing with different GHC version on darwin.
105105
- name: Build development shell with nix dependencies for current GHC version
106-
run: nix develop --print-build-logs .#all-nix-dev-shells --profile dev
106+
run: nix develop --print-build-logs .#haskell-language-server-dev-nix --profile dev
107107
- name: Push development shell
108108
if: ${{ env.HAS_TOKEN == 'true' }}
109109
run: cachix push haskell-language-server dev

cabal.project

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ package *
5050

5151
write-ghc-environment-files: never
5252

53-
index-state: 2023-01-27T00:00:00Z
53+
index-state: 2023-03-15T00:00:00Z
5454

5555
constraints:
5656
-- For GHC 9.4, older versions of entropy fail to build on Windows
@@ -66,7 +66,9 @@ constraints:
6666
ghc-check -ghc-check-use-package-abis,
6767
ghc-lib-parser-ex -auto,
6868
stylish-haskell +ghc-lib,
69-
fourmolu -fixity-th
69+
fourmolu -fixity-th,
70+
-- http2 doesn't build with -haddock on ghc-8.10
71+
http2 < 4.0.0
7072

7173
-- This is benign and won't affect our ability to release to Hackage,
7274
-- because we only depend on `ekg-json` when a non-default flag

exe/Wrapper.hs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@ import Development.IDE.Types.Logger (Logger (Logger),
5050
Priority (Info),
5151
Recorder (logger_),
5252
WithPriority (WithPriority),
53+
Doc,
5354
cmapWithPrio,
54-
makeDefaultStderrRecorder)
55+
makeDefaultStderrRecorder,
56+
toCologActionWithPrio)
5557
import GHC.Stack.Types (emptyCallStack)
5658
import Ide.Plugin.Config (Config)
5759
import Ide.Types (IdePlugins (IdePlugins))
@@ -74,6 +76,7 @@ main = do
7476
args <- getArguments "haskell-language-server-wrapper" mempty
7577

7678
hlsVer <- haskellLanguageServerVersion
79+
recorder <- makeDefaultStderrRecorder Nothing Info
7780
case args of
7881
ProbeToolsMode -> do
7982
programsOfInterest <- findProgramVersions
@@ -82,7 +85,7 @@ main = do
8285
putStrLn $ showProgramVersionOfInterest programsOfInterest
8386
putStrLn "Tool versions in your project"
8487
cradle <- findProjectCradle' False
85-
ghcVersion <- runExceptT $ getRuntimeGhcVersion' cradle
88+
ghcVersion <- runExceptT $ getRuntimeGhcVersion' recorder cradle
8689
putStrLn $ showProgramVersion "ghc" $ mkVersion =<< eitherToMaybe ghcVersion
8790

8891
VersionMode PrintVersion ->
@@ -95,18 +98,18 @@ main = do
9598
print =<< findProjectCradle
9699
PrintLibDir -> do
97100
cradle <- findProjectCradle' False
98-
(CradleSuccess libdir) <- HieBios.getRuntimeGhcLibDir cradle
101+
(CradleSuccess libdir) <- HieBios.getRuntimeGhcLibDir (toCologActionWithPrio (cmapWithPrio pretty recorder)) cradle
99102
putStr libdir
100-
_ -> launchHaskellLanguageServer args >>= \case
103+
_ -> launchHaskellLanguageServer recorder args >>= \case
101104
Right () -> pure ()
102105
Left err -> do
103106
T.hPutStrLn stderr (prettyError err NoShorten)
104107
case args of
105-
Ghcide _ -> launchErrorLSP (prettyError err Shorten)
108+
Ghcide _ -> launchErrorLSP recorder (prettyError err Shorten)
106109
_ -> pure ()
107110

108-
launchHaskellLanguageServer :: Arguments -> IO (Either WrapperSetupError ())
109-
launchHaskellLanguageServer parsedArgs = do
111+
launchHaskellLanguageServer :: Recorder (WithPriority (Doc ())) -> Arguments -> IO (Either WrapperSetupError ())
112+
launchHaskellLanguageServer recorder parsedArgs = do
110113
case parsedArgs of
111114
Ghcide GhcideArguments{..} -> whenJust argsCwd setCurrentDirectory
112115
_ -> pure ()
@@ -122,7 +125,7 @@ launchHaskellLanguageServer parsedArgs = do
122125
case parsedArgs of
123126
Ghcide GhcideArguments{..} ->
124127
when argsProjectGhcVersion $ do
125-
runExceptT (getRuntimeGhcVersion' cradle) >>= \case
128+
runExceptT (getRuntimeGhcVersion' recorder cradle) >>= \case
126129
Right ghcVersion -> putStrLn ghcVersion >> exitSuccess
127130
Left err -> T.putStrLn (prettyError err NoShorten) >> exitFailure
128131
_ -> pure ()
@@ -145,7 +148,7 @@ launchHaskellLanguageServer parsedArgs = do
145148
hPutStrLn stderr "Consulting the cradle to get project GHC version..."
146149

147150
runExceptT $ do
148-
ghcVersion <- getRuntimeGhcVersion' cradle
151+
ghcVersion <- getRuntimeGhcVersion' recorder cradle
149152
liftIO $ hPutStrLn stderr $ "Project GHC version: " ++ ghcVersion
150153

151154
let
@@ -170,10 +173,10 @@ launchHaskellLanguageServer parsedArgs = do
170173

171174
let cradleName = actionName (cradleOptsProg cradle)
172175
-- we need to be compatible with NoImplicitPrelude
173-
ghcBinary <- liftIO (fmap trim <$> runGhcCmd ["-v0", "-package-env=-", "-ignore-dot-ghci", "-e", "Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)"])
176+
ghcBinary <- liftIO (fmap trim <$> runGhcCmd (toCologActionWithPrio (cmapWithPrio pretty recorder)) ["-v0", "-package-env=-", "-ignore-dot-ghci", "-e", "Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)"])
174177
>>= cradleResult cradleName
175178

176-
libdir <- liftIO (HieBios.getRuntimeGhcLibDir cradle)
179+
libdir <- liftIO (HieBios.getRuntimeGhcLibDir (toCologActionWithPrio (cmapWithPrio pretty recorder)) cradle)
177180
>>= cradleResult cradleName
178181

179182
env <- Map.fromList <$> liftIO getEnvironment
@@ -190,8 +193,8 @@ cradleResult cradleName CradleNone = throwE $ NoneCradleGhcVersion cradleName
190193

191194
-- | Version of 'getRuntimeGhcVersion' that dies if we can't get it, and also
192195
-- checks to see if the tool is missing if it is one of
193-
getRuntimeGhcVersion' :: Cradle Void -> ExceptT WrapperSetupError IO String
194-
getRuntimeGhcVersion' cradle = do
196+
getRuntimeGhcVersion' :: Recorder (WithPriority (Doc ())) -> Cradle Void -> ExceptT WrapperSetupError IO String
197+
getRuntimeGhcVersion' recorder cradle = do
195198
let cradleName = actionName (cradleOptsProg cradle)
196199

197200
-- See if the tool is installed
@@ -202,7 +205,7 @@ getRuntimeGhcVersion' cradle = do
202205
Direct -> checkToolExists "ghc"
203206
_ -> pure ()
204207

205-
ghcVersionRes <- liftIO $ HieBios.getRuntimeGhcVersion cradle
208+
ghcVersionRes <- liftIO $ HieBios.getRuntimeGhcVersion (toCologActionWithPrio (cmapWithPrio pretty recorder)) cradle
206209
cradleResult cradleName ghcVersionRes
207210

208211
where
@@ -271,10 +274,8 @@ newtype ErrorLSPM c a = ErrorLSPM { unErrorLSPM :: (LspM c) a }
271274

272275
-- | Launches a LSP that displays an error and presents the user with a request
273276
-- to shut down the LSP.
274-
launchErrorLSP :: T.Text -> IO ()
275-
launchErrorLSP errorMsg = do
276-
recorder <- makeDefaultStderrRecorder Nothing Info
277-
277+
launchErrorLSP :: Recorder (WithPriority (Doc ())) -> T.Text -> IO ()
278+
launchErrorLSP recorder errorMsg = do
278279
let logger = Logger $ \p m -> logger_ recorder (WithPriority p emptyCallStack (pretty m))
279280

280281
let defaultArguments = Main.defaultArguments (cmapWithPrio pretty recorder) logger (IdePlugins [])

flake.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@
172172
};
173173

174174
ghc902Config = (import ./configuration-ghc-90.nix) { inherit pkgs inputs; };
175-
ghc926Config = (import ./configuration-ghc-92.nix) { inherit pkgs inputs; };
175+
ghc927Config = (import ./configuration-ghc-92.nix) { inherit pkgs inputs; };
176176
ghc944Config = (import ./configuration-ghc-94.nix) { inherit pkgs inputs; };
177177

178178
# GHC versions
@@ -182,13 +182,13 @@
182182
ghcVersion = "ghc" + (pkgs.lib.replaceStrings ["."] [""] pkgs.haskellPackages.ghc.version);
183183
cases = {
184184
ghc902 = ghc902Config.tweakHpkgs (pkgs.hlsHpkgs "ghc902");
185-
ghc926 = ghc926Config.tweakHpkgs (pkgs.hlsHpkgs "ghc926");
185+
ghc927 = ghc927Config.tweakHpkgs (pkgs.hlsHpkgs "ghc927");
186186
ghc944 = ghc944Config.tweakHpkgs (pkgs.hlsHpkgs "ghc944");
187187
};
188188
in { default = cases."${ghcVersion}"; } // cases;
189189

190190
ghc902 = supportedGHCs.ghc902;
191-
ghc926 = supportedGHCs.ghc926;
191+
ghc927 = supportedGHCs.ghc927;
192192
ghc944 = supportedGHCs.ghc944;
193193
ghcDefault = supportedGHCs.default;
194194

@@ -310,15 +310,15 @@
310310
simpleDevShells = {
311311
haskell-language-server-dev = mkDevShell ghcDefault "cabal.project";
312312
haskell-language-server-902-dev = mkDevShell ghc902 "cabal.project";
313-
haskell-language-server-926-dev = mkDevShell ghc926 "cabal.project";
313+
haskell-language-server-927-dev = mkDevShell ghc927 "cabal.project";
314314
haskell-language-server-944-dev = mkDevShell ghc944 "cabal.project";
315315
};
316316

317317
# Developement shell, haskell packages are also provided by nix
318318
nixDevShells = {
319319
haskell-language-server-dev-nix = mkDevShellWithNixDeps ghcDefault "cabal.project";
320320
haskell-language-server-902-dev-nix = mkDevShellWithNixDeps ghc902 "cabal.project";
321-
haskell-language-server-926-dev-nix = mkDevShellWithNixDeps ghc926 "cabal.project";
321+
haskell-language-server-927-dev-nix = mkDevShellWithNixDeps ghc927 "cabal.project";
322322
haskell-language-server-944-dev-nix = mkDevShellWithNixDeps ghc944 "cabal.project";
323323
};
324324

@@ -327,14 +327,14 @@
327327
envShells = {
328328
haskell-language-server-dev-env = mkEnvShell ghcDefault;
329329
haskell-language-server-902-dev-env = mkEnvShell ghc902;
330-
haskell-language-server-926-dev-env = mkEnvShell ghc926;
330+
haskell-language-server-927-dev-env = mkEnvShell ghc927;
331331
haskell-language-server-944-dev-env = mkEnvShell ghc944;
332332
};
333333

334334
allPackages = {
335335
haskell-language-server = mkExe ghcDefault;
336336
haskell-language-server-902 = mkExe ghc902;
337-
haskell-language-server-926 = mkExe ghc926;
337+
haskell-language-server-927 = mkExe ghc927;
338338
haskell-language-server-944 = mkExe ghc944;
339339
};
340340

@@ -354,9 +354,8 @@
354354
all-haskell-language-server = linkFarmFromDrvs "all-haskell-language-server" (lib.unique (builtins.attrValues allPackages));
355355

356356
# Same for all shells
357-
# We try to build as much as possible, but not much shells are
358-
# working (especially on darwing), so this list is limited.
359-
all-nix-dev-shells = linkFarmFromDrvs "all-dev-shells" (builtins.map (shell: shell.inputDerivation) (lib.unique [nixDevShells.haskell-language-server-dev-nix]));
357+
all-nix-dev-shells = linkFarmFromDrvs "all-dev-shells"
358+
(builtins.map (shell: shell.inputDerivation) (lib.unique (builtins.attrValues nixDevShells)));
360359

361360
all-simple-dev-shells = linkFarmFromDrvs "all-simple-dev-shells"
362361
(builtins.map (shell: shell.inputDerivation) (lib.unique (builtins.attrValues simpleDevShells)));

ghcide/ghcide.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ library
103103
ghc-check >=0.5.0.8,
104104
ghc-paths,
105105
cryptohash-sha1 >=0.11.100 && <0.12,
106-
hie-bios ^>= 0.11.0,
106+
hie-bios == 0.12.0,
107107
-- implicit-hie 0.1.3.0 introduced an unexpected behavioral change.
108108
-- https://github.com/Avi-D-coder/implicit-hie/issues/50
109109
-- to make sure ghcide behaves in a desirable way, we put implicit-hie

ghcide/session-loader/Development/IDE/Session.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ getInitialGhcLibDirDefault recorder rootDir = do
262262
let log = logWith recorder
263263
hieYaml <- findCradle def rootDir
264264
cradle <- loadCradle def hieYaml rootDir
265-
libDirRes <- getRuntimeGhcLibDir cradle
265+
libDirRes <- getRuntimeGhcLibDir (toCologActionWithPrio (cmapWithPrio LogHieBios recorder)) cradle
266266
case libDirRes of
267267
CradleSuccess libdir -> pure $ Just $ LibDir libdir
268268
CradleFail err -> do
@@ -725,7 +725,7 @@ cradleToOptsAndLibDir recorder cradle file = do
725725
case cradleRes of
726726
CradleSuccess r -> do
727727
-- Now get the GHC lib dir
728-
libDirRes <- getRuntimeGhcLibDir cradle
728+
libDirRes <- getRuntimeGhcLibDir logger cradle
729729
case libDirRes of
730730
-- This is the successful path
731731
CradleSuccess libDir -> pure (Right (r, libDir))

src/Ide/Main.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import Development.IDE.Types.Logger as G
2828
import qualified Development.IDE.Types.Options as Ghcide
2929
import GHC.Stack (emptyCallStack)
3030
import qualified HIE.Bios.Environment as HieBios
31+
import qualified HIE.Bios.Types as HieBios
3132
import HIE.Bios.Types hiding (Log)
3233
import Ide.Arguments
3334
import Ide.Plugin.ConfigUtils (pluginsToDefaultConfig,
@@ -44,6 +45,7 @@ data Log
4445
| LogDirectory !FilePath
4546
| LogLspStart !GhcideArguments ![PluginId]
4647
| LogIDEMain IDEMain.Log
48+
| LogHieBios HieBios.Log
4749
| LogOther T.Text
4850
deriving Show
4951

@@ -58,6 +60,7 @@ instance Pretty Log where
5860
, viaShow ghcideArgs
5961
, "PluginIds:" <+> pretty (coerce @_ @[Text] pluginIds) ]
6062
LogIDEMain iDEMainLog -> pretty iDEMainLog
63+
LogHieBios hieBiosLog -> pretty hieBiosLog
6164
LogOther t -> pretty t
6265

6366
defaultMain :: Recorder (WithPriority Log) -> Arguments -> IdePlugins IdeState -> IO ()
@@ -105,7 +108,7 @@ defaultMain recorder args idePlugins = do
105108
let initialFp = d </> "a"
106109
hieYaml <- Session.findCradle def initialFp
107110
cradle <- Session.loadCradle def hieYaml d
108-
(CradleSuccess libdir) <- HieBios.getRuntimeGhcLibDir cradle
111+
(CradleSuccess libdir) <- HieBios.getRuntimeGhcLibDir (toCologActionWithPrio (cmapWithPrio LogHieBios recorder)) cradle
109112
putStr libdir
110113
where
111114
encodePrettySorted = A.encodePretty' A.defConfig

stack-lts19.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ extra-deps:
6262
- lsp-1.6.0.0
6363
- lsp-types-1.6.0.0
6464
- lsp-test-0.14.1.0
65-
- hie-bios-0.11.0
65+
- hie-bios-0.12.0
6666

6767
configure-options:
6868
ghcide:

stack.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extra-deps:
5050
- lsp-1.6.0.0
5151
- lsp-types-1.6.0.0
5252
- lsp-test-0.14.1.0
53-
- hie-bios-0.11.0
53+
- hie-bios-0.12.0
5454

5555
# currently needed for ghcide>extra, etc.
5656
allow-newer: true

0 commit comments

Comments
 (0)