Skip to content

Commit 3754f41

Browse files
committed
Improve wrapper cradle errors
1 parent 54de5a7 commit 3754f41

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

exe/Wrapper.hs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{-# LANGUAGE RecordWildCards #-}
22
{-# LANGUAGE NamedFieldPuns #-}
3+
{-# LANGUAGE LambdaCase #-}
34
{-# LANGUAGE CPP #-}
45
-- | This module is based on the hie-wrapper.sh script in
56
-- https://github.com/alanz/vscode-hie-server
@@ -114,8 +115,18 @@ launchHaskellLanguageServer parsedArgs = do
114115
callProcess e args
115116
#else
116117
let Cradle { cradleOptsProg = CradleAction { runGhcCmd } } = cradle
117-
(CradleSuccess ghcBinary) <- fmap trim <$> runGhcCmd ["-v0", "-package-env=-", "-e", "putStr =<< System.Environment.getExecutablePath"]
118-
(CradleSuccess libdir) <- HieBios.getRuntimeGhcLibDir cradle
118+
ghcBinary <- (fmap trim <$> runGhcCmd ["-v0", "-package-env=-", "-e", "putStr =<< System.Environment.getExecutablePath"])
119+
>>= \case
120+
CradleSuccess ghc -> do
121+
return ghc
122+
CradleFail error -> die $ "Failed to get project GHC executable path:" ++ show error
123+
CradleNone -> die "Failed get project GHC executable path, since we have a none cradle"
124+
libdir <- HieBios.getRuntimeGhcLibDir cradle
125+
>>= \case
126+
CradleSuccess lib -> do
127+
return lib
128+
CradleFail error -> die $ "Failed to get project GHC libdir path:" ++ show error
129+
CradleNone -> die "Failed get project GHC libdir path, since we have a none cradle"
119130
env <- Map.fromList <$> getEnvironment
120131
let newEnv = Map.insert "GHC_BIN" ghcBinary $ Map.insert "GHC_LIBDIR" libdir env
121132
executeFile e True args (Just (Map.toList newEnv))

0 commit comments

Comments
 (0)