Skip to content

Commit 9cdb581

Browse files
committed
Fallback to hie-bios implicit cradle
We switch to cabal-helper cradle but adding a fallback to hie-bios default implicit one
1 parent f412d98 commit 9cdb581

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

exe/Main.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ loadSession dir = do
445445
-- throwing an async exception
446446
void $ forkIO $ do
447447
putStrLn $ "Consulting the cradle for " <> show file
448-
cradle <- maybe (cabalHelperCradle cfp) (fmap vacuous . loadCradle) hieYaml
448+
cradle <- maybe (implicitCradle cfp) (fmap vacuous . loadCradle) hieYaml
449449
eopts <- cradleToSessionOpts cradle cfp
450450
print eopts
451451
case eopts of

src/Ide/Cradle.hs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,28 @@ findLocalCradle fp = do
5858
logm $ "Module \"" ++ fp ++ "\" is loaded by Cradle: " ++ show crdl
5959
return crdl
6060

61+
implicitCradle :: FilePath -> IO (Cradle CabalHelper)
62+
implicitCradle fp = do
63+
crd@Cradle
64+
{ cradleOptsProg = CradleAction { actionName, runCradle = chRunCradle}
65+
} <- cabalHelperCradle fp
66+
return $ crd {
67+
cradleOptsProg =
68+
CradleAction
69+
{ actionName
70+
, runCradle = \logF fp -> do
71+
res <- chRunCradle logF fp
72+
case res of
73+
CradleFail (CradleError _ex stde) -> do
74+
debugm $ "Error loading " ++ cradleDisplay crd ++ ": " ++ unlines stde
75+
debugm $ "Fallback to hie-bios implicit cradle"
76+
implCradle :: Cradle CabalHelper <- loadImplicitCradle fp
77+
implRes <- (runCradle (cradleOptsProg implCradle)) logF fp
78+
return implRes
79+
_ -> return res
80+
}
81+
}
82+
6183
-- | Check if the given cradle is a stack cradle.
6284
-- This might be used to determine the GHC version to use on the project.
6385
-- If it is a stack-cradle, we have to use @"stack path --compiler-exe"@

0 commit comments

Comments
 (0)