File tree Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -445,7 +445,7 @@ loadSession dir = do
445
445
-- throwing an async exception
446
446
void $ forkIO $ do
447
447
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
449
449
eopts <- cradleToSessionOpts cradle cfp
450
450
print eopts
451
451
case eopts of
Original file line number Diff line number Diff line change @@ -58,6 +58,28 @@ findLocalCradle fp = do
58
58
logm $ " Module \" " ++ fp ++ " \" is loaded by Cradle: " ++ show crdl
59
59
return crdl
60
60
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
+
61
83
-- | Check if the given cradle is a stack cradle.
62
84
-- This might be used to determine the GHC version to use on the project.
63
85
-- If it is a stack-cradle, we have to use @"stack path --compiler-exe"@
You can’t perform that action at this time.
0 commit comments