1
1
{-# LANGUAGE RecordWildCards #-}
2
2
{-# LANGUAGE NamedFieldPuns #-}
3
- {-# LANGUAGE LambdaCase #-}
4
3
{-# LANGUAGE CPP #-}
5
4
-- | This module is based on the hie-wrapper.sh script in
6
5
-- https://github.com/alanz/vscode-hie-server
@@ -116,22 +115,20 @@ launchHaskellLanguageServer parsedArgs = do
116
115
#else
117
116
let Cradle { cradleOptsProg = CradleAction { runGhcCmd } } = cradle
118
117
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"
118
+ >>= cradleResult " Failed to get project GHC executable path"
124
119
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"
120
+ >>= cradleResult " Failed to get project GHC libdir path"
130
121
env <- Map. fromList <$> getEnvironment
131
122
let newEnv = Map. insert " GHC_BIN" ghcBinary $ Map. insert " GHC_LIBDIR" libdir env
132
123
executeFile e True args (Just (Map. toList newEnv))
133
124
#endif
134
125
126
+
127
+ cradleResult :: String -> CradleLoadResult a -> IO a
128
+ cradleResult _ (CradleSuccess a) = pure a
129
+ cradleResult str (CradleFail e) = die $ str ++ " : " ++ show e
130
+ cradleResult str CradleNone = die $ str ++ " : no cradle"
131
+
135
132
-- | Version of 'getRuntimeGhcVersion' that dies if we can't get it, and also
136
133
-- checks to see if the tool is missing if it is one of
137
134
getRuntimeGhcVersion' :: Show a => Cradle a -> IO String
@@ -145,12 +142,7 @@ getRuntimeGhcVersion' cradle = do
145
142
Direct -> checkToolExists " ghc"
146
143
_ -> pure ()
147
144
148
- ghcVersionRes <- HieBios. getRuntimeGhcVersion cradle
149
- case ghcVersionRes of
150
- CradleSuccess ver -> do
151
- return ver
152
- CradleFail error -> die $ " Failed to get project GHC version:" ++ show error
153
- CradleNone -> die " Failed get project GHC version, since we have a none cradle"
145
+ HieBios. getRuntimeGhcVersion cradle >>= cradleResult " Failed to get project GHC version"
154
146
where
155
147
checkToolExists exe = do
156
148
exists <- findExecutable exe
0 commit comments