@@ -630,13 +630,13 @@ loadSessionWithOptions recorder SessionLoadingOptions{..} rootDir que = do
630
630
-- remove error files from pending files since error loading need to load one by one
631
631
let pendingFiles = pendingFiles' `Set.difference` errorFiles
632
632
-- if the file is in error loading files, we fall back to single loading mode
633
- let toLoads = if cfp `Set.member` errorFiles then Set. empty else pendingFiles
633
+ let extraToLoads = if cfp `Set.member` errorFiles then Set. empty else pendingFiles
634
634
635
635
eopts <- mRunLspTCallback lspEnv (\ act -> withIndefiniteProgress progMsg Nothing NotCancellable (const act)) $
636
636
withTrace " Load cradle" $ \ addTag -> do
637
637
addTag " file" lfpLog
638
638
old_files <- readIORef cradle_files
639
- res <- cradleToOptsAndLibDir recorder (sessionLoading clientConfig) cradle cfp (Set. toList $ Set. delete cfp $ toLoads <> old_files)
639
+ res <- cradleToOptsAndLibDir recorder (sessionLoading clientConfig) cradle cfp (Set. toList $ Set. delete cfp $ extraToLoads <> old_files)
640
640
addTag " result" (show res)
641
641
return res
642
642
@@ -660,16 +660,16 @@ loadSessionWithOptions recorder SessionLoadingOptions{..} rootDir que = do
660
660
logWith recorder Info $ LogSessionNewLoadedFiles $ Set. toList newLoadedT
661
661
atomicModifyIORef' cradle_files (\ xs -> (newLoadedT <> xs,() ))
662
662
-- remove the file from error loading files
663
- atomicModifyIORef' error_loading_files (\ old -> (old `Set.difference` newLoadedT , () ))
663
+ atomicModifyIORef' error_loading_files (\ old -> (old `Set.difference` allNewLoaded , () ))
664
664
return results
665
665
| otherwise -> return (([renderPackageSetupException cfp GhcVersionMismatch {.. }], Nothing ),[] )
666
666
-- Failure case, either a cradle error or the none cradle
667
667
Left err -> do
668
- if (length toLoads > 1 )
668
+ if (not $ null extraToLoads )
669
669
then do
670
670
succLoaded_files <- readIORef cradle_files
671
671
-- mark as less loaded files as failedLoadingFiles as possible
672
- let failedLoadingFiles = (Set. insert cfp toLoads ) `Set.difference` succLoaded_files
672
+ let failedLoadingFiles = (Set. insert cfp extraToLoads ) `Set.difference` succLoaded_files
673
673
atomicModifyIORef' error_loading_files (\ xs -> (failedLoadingFiles <> xs,() ))
674
674
-- retry without other files
675
675
atomically $ forM_ pendingFiles (writeTQueue pendingFilesTQueue)
@@ -681,6 +681,7 @@ loadSessionWithOptions recorder SessionLoadingOptions{..} rootDir que = do
681
681
void $ modifyVar' fileToFlags $
682
682
Map. insertWith HM. union hieYaml (HM. singleton ncfp (res, dep_info))
683
683
void $ modifyVar' filesMap $ HM. insert ncfp hieYaml
684
+ atomicModifyIORef' error_loading_files (\ xs -> (Set. insert cfp xs,() ))
684
685
return (res, maybe [] pure hieYaml ++ concatMap cradleErrorDependencies err)
685
686
686
687
let
0 commit comments