Skip to content

Commit 992321a

Browse files
author
kokobd
committed
use OsPath based NormalizedFilePath
1 parent 55d9024 commit 992321a

File tree

35 files changed

+120
-109
lines changed

35 files changed

+120
-109
lines changed

cabal.project

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,28 @@ source-repository-package
6464
tag: 7a0af7a8fd38045fd15fb13445bdcc7085325460
6565
-- https://github.com/tibbe/ekg-json/pull/12
6666

67+
-- TODO: remove these source-repository-package
68+
source-repository-package
69+
type: git
70+
location: https://github.com/kokobd/lsp
71+
-- kokobd/os-path
72+
tag: 99452008e5f0f9147c7ff290ace122870487b3b5
73+
subdir: lsp
74+
75+
source-repository-package
76+
type: git
77+
location: https://github.com/kokobd/lsp
78+
-- kokobd/os-path
79+
tag: 99452008e5f0f9147c7ff290ace122870487b3b5
80+
subdir: lsp-types
81+
82+
source-repository-package
83+
type: git
84+
location: https://github.com/kokobd/lsp
85+
-- kokobd/os-path
86+
tag: 99452008e5f0f9147c7ff290ace122870487b3b5
87+
subdir: lsp-test
88+
6789
allow-newer:
6890
-- ghc-9.2
6991
----------

docs/contributing/plugin-tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ type instance RuleResult GetModSummary = ModSummary
160160

161161
The `use` family of combinators allow to request rule results. For example, the following code is used in the Eval plugin to request a GHC session and a module summary (for the imports) in order to set up an interactive evaluation environment
162162
```haskell
163-
let nfp = toNormalizedFilePath' fp
163+
let nfp = unsafeToNormalizedFilePath' fp
164164
session <- runAction "runEvalCmd.ghcSession" state $ use_ GhcSessionDeps nfp
165165
ms <- runAction "runEvalCmd.getModSummary" state $ use_ GetModSummary nfp
166166
```

ghcide/session-loader/Development/IDE/Session.hs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -636,11 +636,11 @@ loadSessionWithOptions recorder SessionLoadingOptions{..} dir = do
636636
InstallationMismatch{..} ->
637637
return (([renderPackageSetupException cfp GhcVersionMismatch{..}], Nothing),[])
638638
InstallationChecked _compileTime _ghcLibCheck ->
639-
session (hieYaml, toNormalizedFilePath' cfp, opts, libDir)
639+
session (hieYaml, unsafeToNormalizedFilePath' cfp, opts, libDir)
640640
-- Failure case, either a cradle error or the none cradle
641641
Left err -> do
642642
dep_info <- getDependencyInfo (maybeToList hieYaml)
643-
let ncfp = toNormalizedFilePath' cfp
643+
let ncfp = unsafeToNormalizedFilePath' cfp
644644
let res = (map (renderCradleError ncfp) err, Nothing)
645645
void $ modifyVar' fileToFlags $
646646
Map.insertWith HM.union hieYaml (HM.singleton ncfp (res, dep_info))
@@ -654,7 +654,7 @@ loadSessionWithOptions recorder SessionLoadingOptions{..} dir = do
654654
sessionOpts (hieYaml, file) = do
655655
v <- Map.findWithDefault HM.empty hieYaml <$> readVar fileToFlags
656656
cfp <- makeAbsolute file
657-
case HM.lookup (toNormalizedFilePath' cfp) v of
657+
case HM.lookup (unsafeToNormalizedFilePath' cfp) v of
658658
Just (opts, old_di) -> do
659659
deps_ok <- checkDependencyInfo old_di
660660
if not deps_ok
@@ -674,7 +674,7 @@ loadSessionWithOptions recorder SessionLoadingOptions{..} dir = do
674674
-- before attempting to do so.
675675
let getOptions :: FilePath -> IO (IdeResult HscEnvEq, [FilePath])
676676
getOptions file = do
677-
ncfp <- toNormalizedFilePath' <$> makeAbsolute file
677+
ncfp <- unsafeToNormalizedFilePath' <$> makeAbsolute file
678678
cachedHieYamlLocation <- HM.lookup ncfp <$> readVar filesMap
679679
hieYaml <- cradleLoc file
680680
sessionOpts (join cachedHieYamlLocation <|> hieYaml, file) `Safe.catch` \e ->
@@ -745,11 +745,11 @@ fromTargetId is exts (GHC.TargetModule mod) env dep = do
745745
, i <- is
746746
, boot <- ["", "-boot"]
747747
]
748-
locs <- mapM (fmap toNormalizedFilePath' . makeAbsolute) fps
748+
locs <- mapM (fmap unsafeToNormalizedFilePath' . makeAbsolute) fps
749749
return [TargetDetails (TargetModule mod) env dep locs]
750750
-- For a 'TargetFile' we consider all the possible module names
751751
fromTargetId _ _ (GHC.TargetFile f _) env deps = do
752-
nf <- toNormalizedFilePath' <$> makeAbsolute f
752+
nf <- unsafeToNormalizedFilePath' <$> makeAbsolute f
753753
return [TargetDetails (TargetFile nf) env deps [nf]]
754754

755755
toFlagsMap :: TargetDetails -> [(NormalizedFilePath, (IdeResult HscEnvEq, DependencyInfo))]
@@ -1080,4 +1080,4 @@ showPackageSetupException (PackageCheckFailed BasePackageAbiMismatch{..}) = unwo
10801080

10811081
renderPackageSetupException :: FilePath -> PackageSetupException -> (NormalizedFilePath, ShowDiagnostic, Diagnostic)
10821082
renderPackageSetupException fp e =
1083-
ideErrorWithSource (Just "cradle") (Just DsError) (toNormalizedFilePath' fp) (T.pack $ showPackageSetupException e)
1083+
ideErrorWithSource (Just "cradle") (Just DsError) (unsafeToNormalizedFilePath' fp) (T.pack $ showPackageSetupException e)

ghcide/src/Development/IDE/Core/Compile.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ computePackageDeps
157157
-> IO (Either [FileDiagnostic] [UnitId])
158158
computePackageDeps env pkg = do
159159
case lookupUnit env pkg of
160-
Nothing -> return $ Left [ideErrorText (toNormalizedFilePath' noFilePath) $
160+
Nothing -> return $ Left [ideErrorText (unsafeToNormalizedFilePath' noFilePath) $
161161
T.pack $ "unknown package: " ++ show pkg]
162162
Just pkgInfo -> return $ Right $ unitDepends pkgInfo
163163

@@ -285,7 +285,7 @@ captureSplicesAndDeps TypecheckHelpers{..} env k = do
285285
-- Non det OK as we will put it into maps later anyway
286286
mods_transitive_list = nonDetEltsUniqSet mods_transitive
287287

288-
; lbs <- getLinkables [toNormalizedFilePath' file | mod <- mkHomeModule
288+
; lbs <- getLinkables [unsafeToNormalizedFilePath' file | mod <- mkHomeModule
289289
#if MIN_VERSION_ghc(9,0,0)
290290
(hscHomeUnit hsc_env)
291291
#else
@@ -678,7 +678,7 @@ atomicFileWrite se targetPath write = do
678678
let dir = takeDirectory targetPath
679679
createDirectoryIfMissing True dir
680680
(tempFilePath, cleanUp) <- newTempFileWithin dir
681-
(write tempFilePath >>= \x -> renameFile tempFilePath targetPath >> atomically (resetInterfaceStore se (toNormalizedFilePath' targetPath)) >> pure x)
681+
(write tempFilePath >>= \x -> renameFile tempFilePath targetPath >> atomically (resetInterfaceStore se (unsafeToNormalizedFilePath' targetPath)) >> pure x)
682682
`onException` cleanUp
683683

684684
generateHieAsts :: HscEnv -> TcModuleResult -> IO ([FileDiagnostic], Maybe (HieASTs Type))
@@ -1259,7 +1259,7 @@ loadInterface session ms linkableNeeded RecompilationInfo{..} = do
12591259

12601260
mb_dest_version <- case mb_old_version of
12611261
Just ver -> pure $ Just ver
1262-
Nothing -> get_file_version (toNormalizedFilePath' iface_file)
1262+
Nothing -> get_file_version (unsafeToNormalizedFilePath' iface_file)
12631263

12641264
-- The source is modified if it is newer than the destination (iface file)
12651265
-- A more precise check for the core file is performed later
@@ -1343,7 +1343,7 @@ checkLinkableDependencies get_linkable_hashes graph runtime_deps = do
13431343
go (mod, hash) = do
13441344
ms <- mgLookupModule graph mod
13451345
let hs = fromJust $ ml_hs_file $ ms_location ms
1346-
pure (toNormalizedFilePath' hs, hash)
1346+
pure (unsafeToNormalizedFilePath' hs, hash)
13471347
case hs_files of
13481348
Nothing -> error "invalid module graph"
13491349
Just fs -> do

ghcide/src/Development/IDE/Core/Preprocessor.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ data CPPDiag
9595

9696
diagsFromCPPLogs :: FilePath -> [CPPLog] -> [FileDiagnostic]
9797
diagsFromCPPLogs filename logs =
98-
map (\d -> (toNormalizedFilePath' filename, ShowDiag, cppDiagToDiagnostic d)) $
98+
map (\d -> (unsafeToNormalizedFilePath' filename, ShowDiag, cppDiagToDiagnostic d)) $
9999
go [] logs
100100
where
101101
-- On errors, CPP calls logAction with a real span for the initial log and

ghcide/src/Development/IDE/Core/Rules.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ getParsedModuleRule recorder =
297297
-- by us and not the user, so our IDE shouldn't stop working because of it.
298298
_ -> pure (diagsM, res)
299299
-- Add dependencies on included files
300-
_ <- uses GetModificationTime $ map toNormalizedFilePath' (maybe [] pm_extra_src_files pmod)
300+
_ <- uses GetModificationTime $ map unsafeToNormalizedFilePath' (maybe [] pm_extra_src_files pmod)
301301
pure res
302302

303303
withOptHaddock :: ModSummary -> ModSummary
@@ -401,7 +401,7 @@ getLocatedImportsRule recorder =
401401
{- IS THIS REALLY NEEDED? DOESNT SEEM SO
402402
403403
-- does this module have an hs-boot file? If so add a direct dependency
404-
let bootPath = toNormalizedFilePath' $ fromNormalizedFilePath file <.> "hs-boot"
404+
let bootPath = unsafeToNormalizedFilePath' $ fromNormalizedFilePath file <.> "hs-boot"
405405
boot <- use GetFileExists bootPath
406406
bootArtifact <- if boot == Just True
407407
then do
@@ -514,7 +514,7 @@ rawDependencyInformation fs = do
514514
updateBootMap pm boot_mod_id ArtifactsLocation{..} bm =
515515
if not artifactIsSource
516516
then
517-
let msource_mod_id = lookupPathToId (rawPathIdMap pm) (toNormalizedFilePath' $ dropBootSuffix $ fromNormalizedFilePath artifactFilePath)
517+
let msource_mod_id = lookupPathToId (rawPathIdMap pm) (unsafeToNormalizedFilePath' $ dropBootSuffix $ fromNormalizedFilePath artifactFilePath)
518518
in case msource_mod_id of
519519
Just source_mod_id -> insertBootId source_mod_id (FilePathId boot_mod_id) bm
520520
Nothing -> bm
@@ -557,7 +557,7 @@ reportImportCyclesRule recorder =
557557
, _tags = Nothing
558558
}
559559
where rng = fromMaybe noRange $ srcSpanToRange (getLoc imp)
560-
fp = toNormalizedFilePath' $ fromMaybe noFilePath $ srcSpanToFilename (getLoc imp)
560+
fp = unsafeToNormalizedFilePath' $ fromMaybe noFilePath $ srcSpanToFilename (getLoc imp)
561561
getModuleName file = do
562562
ms <- msrModSummary <$> use_ GetModSummaryWithoutTimestamps file
563563
pure (moduleNameString . moduleName . ms_mod $ ms)
@@ -707,7 +707,7 @@ typeCheckRuleDefinition hsc pm = do
707707
r@(_, mtc) <- a
708708
forM_ mtc $ \tc -> do
709709
used_files <- liftIO $ readIORef $ tcg_dependent_files $ tmrTypechecked tc
710-
void $ uses_ GetModificationTime (map toNormalizedFilePath' used_files)
710+
void $ uses_ GetModificationTime (map unsafeToNormalizedFilePath' used_files)
711711
return r
712712

713713
-- | Get all the linkables stored in the graph, i.e. the ones we *do not* need to unload.
@@ -737,7 +737,7 @@ loadGhcSession recorder ghcSessionDepsConfig = do
737737
let addDependency fp = do
738738
-- VSCode uses absolute paths in its filewatch notifications
739739
afp <- liftIO $ makeAbsolute fp
740-
let nfp = toNormalizedFilePath' afp
740+
let nfp = unsafeToNormalizedFilePath' afp
741741
itExists <- getFileExists nfp
742742
when itExists $ void $ do
743743
use_ GetModificationTime nfp

ghcide/src/Development/IDE/Core/UseStale.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ import Development.IDE (Action, IdeRule,
3333
NormalizedFilePath,
3434
Range,
3535
rangeToRealSrcSpan,
36-
realSrcSpanToRange)
36+
realSrcSpanToRange,
37+
unsafeToNormalizedFilePath')
3738
import qualified Development.IDE.Core.PositionMapping as P
3839
import qualified Development.IDE.Core.Shake as IDE
3940
import Development.IDE.GHC.Compat (RealSrcSpan, srcSpanFile)
@@ -113,7 +114,7 @@ instance MapAge Range where
113114

114115
instance MapAge RealSrcSpan where
115116
mapAgeFrom =
116-
invMapAge (\fs -> rangeToRealSrcSpan (fromString $ unpackFS fs))
117+
invMapAge (\fs -> rangeToRealSrcSpan (unsafeToNormalizedFilePath' $ unpackFS fs))
117118
(srcSpanFile &&& realSrcSpanToRange)
118119
. mapAgeFrom
119120

ghcide/src/Development/IDE/GHC/Error.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import GHC
4545

4646

4747
diagFromText :: T.Text -> D.DiagnosticSeverity -> SrcSpan -> T.Text -> FileDiagnostic
48-
diagFromText diagSource sev loc msg = (toNormalizedFilePath' $ fromMaybe noFilePath $ srcSpanToFilename loc,ShowDiag,)
48+
diagFromText diagSource sev loc msg = (unsafeToNormalizedFilePath' $ fromMaybe noFilePath $ srcSpanToFilename loc,ShowDiag,)
4949
Diagnostic
5050
{ _range = fromMaybe noRange $ srcSpanToRange loc
5151
, _severity = Just sev
@@ -90,14 +90,14 @@ srcSpanToFilename (Compat.RealSrcSpan real _) = Just $ Compat.unpackFS $ srcSpan
9090

9191
realSrcSpanToLocation :: RealSrcSpan -> Location
9292
realSrcSpanToLocation real = Location file (realSrcSpanToRange real)
93-
where file = fromNormalizedUri $ filePathToUri' $ toNormalizedFilePath' $ Compat.unpackFS $ srcSpanFile real
93+
where file = fromNormalizedUri $ filePathToUri' $ unsafeToNormalizedFilePath' $ Compat.unpackFS $ srcSpanFile real
9494

9595
srcSpanToLocation :: SrcSpan -> Maybe Location
9696
srcSpanToLocation src = do
9797
fs <- srcSpanToFilename src
9898
rng <- srcSpanToRange src
9999
-- important that the URI's we produce have been properly normalized, otherwise they point at weird places in VS Code
100-
pure $ Location (fromNormalizedUri $ filePathToUri' $ toNormalizedFilePath' fs) rng
100+
pure $ Location (fromNormalizedUri $ filePathToUri' $ unsafeToNormalizedFilePath' fs) rng
101101

102102
rangeToSrcSpan :: NormalizedFilePath -> Range -> SrcSpan
103103
rangeToSrcSpan = fmap (\x -> Compat.RealSrcSpan x Nothing) . rangeToRealSrcSpan

ghcide/src/Development/IDE/GHC/Util.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ moduleImportPath (takeDirectory . fromNormalizedFilePath -> pathDir) mn
169169
-- A for module A.B
170170
modDir =
171171
takeDirectory $
172-
fromNormalizedFilePath $ toNormalizedFilePath' $
172+
fromNormalizedFilePath $ unsafeToNormalizedFilePath' $
173173
moduleNameSlashes mn
174174

175175
-- | Read a UTF8 file, with lenient decoding, so it will never raise a decoding error.

ghcide/src/Development/IDE/Import/FindImports.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ locateModuleFile :: MonadIO m
6969
-> m (Maybe NormalizedFilePath)
7070
locateModuleFile import_dirss exts targetFor isSource modName = do
7171
let candidates import_dirs =
72-
[ toNormalizedFilePath' (prefix </> moduleNameSlashes modName <.> maybeBoot ext)
72+
[ unsafeToNormalizedFilePath' (prefix </> moduleNameSlashes modName <.> maybeBoot ext)
7373
| prefix <- import_dirs , ext <- exts]
7474
firstJustM (targetFor modName) (concatMap candidates import_dirss)
7575
where

ghcide/src/Development/IDE/LSP/HoverDefinition.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ references :: IdeState -> ReferenceParams -> LSP.LspM c (Either ResponseError (L
3939
references ide (ReferenceParams (TextDocumentIdentifier uri) pos _ _ _) = liftIO $
4040
case uriToFilePath' uri of
4141
Just path -> do
42-
let filePath = toNormalizedFilePath' path
42+
let filePath = unsafeToNormalizedFilePath' path
4343
logDebug (ideLogger ide) $
4444
"References request at position " <> T.pack (showPosition pos) <>
4545
" in file: " <> T.pack path
@@ -72,7 +72,7 @@ request label getResults notFound found ide (TextDocumentPositionParams (TextDoc
7272

7373
logAndRunRequest :: T.Text -> (NormalizedFilePath -> Position -> IdeAction b) -> IdeState -> Position -> String -> IO b
7474
logAndRunRequest label getResults ide pos path = do
75-
let filePath = toNormalizedFilePath' path
75+
let filePath = unsafeToNormalizedFilePath' path
7676
logDebug (ideLogger ide) $
7777
label <> " request at position " <> T.pack (showPosition pos) <>
7878
" in file: " <> T.pack path

ghcide/src/Development/IDE/LSP/Notifications.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ instance Pretty Log where
5252
LogFileStore log -> pretty log
5353

5454
whenUriFile :: Uri -> (NormalizedFilePath -> IO ()) -> IO ()
55-
whenUriFile uri act = whenJust (LSP.uriToFilePath uri) $ act . toNormalizedFilePath'
55+
whenUriFile uri act = whenJust (LSP.uriToFilePath uri) $ act . unsafeToNormalizedFilePath'
5656

5757
descriptor :: Recorder (WithPriority Log) -> PluginId -> PluginDescriptor IdeState
5858
descriptor recorder plId = (defaultPluginDescriptor plId) { pluginNotificationHandlers = mconcat
@@ -100,7 +100,7 @@ descriptor recorder plId = (defaultPluginDescriptor plId) { pluginNotificationHa
100100
let fileEvents' =
101101
[ (nfp, event) | (FileEvent uri event) <- fileEvents
102102
, Just fp <- [uriToFilePath uri]
103-
, let nfp = toNormalizedFilePath fp
103+
, let nfp = unsafeToNormalizedFilePath fp
104104
, not $ HM.member nfp filesOfInterest
105105
]
106106
unless (null fileEvents') $ do

ghcide/src/Development/IDE/LSP/Outline.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import Language.LSP.Types (DocumentSymbol (..),
2828
SymbolInformation,
2929
SymbolKind (SkConstructor, SkField, SkFile, SkFunction, SkInterface, SkMethod, SkModule, SkObject, SkStruct, SkTypeParameter, SkUnknown),
3030
TextDocumentIdentifier (TextDocumentIdentifier),
31-
type (|?) (InL), uriToFilePath)
31+
type (|?) (InL), uriToFilePath, unsafeFilePathToNormalizedFilePath)
3232
#if MIN_VERSION_ghc(9,2,0)
3333
import Data.List.NonEmpty (nonEmpty, toList)
3434
#endif
@@ -37,7 +37,7 @@ moduleOutline
3737
:: IdeState -> DocumentSymbolParams -> LspM c (Either ResponseError (List DocumentSymbol |? List SymbolInformation))
3838
moduleOutline ideState DocumentSymbolParams{ _textDocument = TextDocumentIdentifier uri }
3939
= liftIO $ case uriToFilePath uri of
40-
Just (toNormalizedFilePath' -> fp) -> do
40+
Just (unsafeToNormalizedFilePath' -> fp) -> do
4141
mb_decls <- fmap fst <$> runAction "Outline" ideState (useWithStale GetParsedModule fp)
4242
pure $ Right $ case mb_decls of
4343
Nothing -> InL (List [])
@@ -219,7 +219,7 @@ documentSymbolForImportSummary importSymbols =
219219
mergeRanges xs = Range (minimum $ map _start xs) (maximum $ map _end xs)
220220
importRange = mergeRanges $ map (_range :: DocumentSymbol -> Range) importSymbols
221221
in
222-
Just (defDocumentSymbol (rangeToRealSrcSpan "" importRange))
222+
Just (defDocumentSymbol (rangeToRealSrcSpan (unsafeFilePathToNormalizedFilePath "") importRange))
223223
{ _name = "imports"
224224
, _kind = SkModule
225225
, _children = Just (List importSymbols)

ghcide/src/Development/IDE/Main.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ import Development.IDE.Session (SessionLoadingOptions
8686
setInitialDynFlags)
8787
import qualified Development.IDE.Session as Session
8888
import Development.IDE.Types.Location (NormalizedUri,
89-
toNormalizedFilePath')
89+
unsafeToNormalizedFilePath')
9090
import Development.IDE.Types.Logger (Logger,
9191
Pretty (pretty),
9292
Priority (Info, Warning),
@@ -427,10 +427,10 @@ defaultMain recorder Arguments{..} = withHeapStats (cmapWithPrio LogHeapStats re
427427
registerIdeConfiguration (shakeExtras ide) $ IdeConfiguration mempty (hashed Nothing)
428428

429429
putStrLn "\nStep 4/4: Type checking the files"
430-
setFilesOfInterest ide $ HashMap.fromList $ map ((,OnDisk) . toNormalizedFilePath') files
431-
results <- runAction "User TypeCheck" ide $ uses TypeCheck (map toNormalizedFilePath' files)
432-
_results <- runAction "GetHie" ide $ uses GetHieAst (map toNormalizedFilePath' files)
433-
_results <- runAction "GenerateCore" ide $ uses GenerateCore (map toNormalizedFilePath' files)
430+
setFilesOfInterest ide $ HashMap.fromList $ map ((,OnDisk) . unsafeToNormalizedFilePath') files
431+
results <- runAction "User TypeCheck" ide $ uses TypeCheck (map unsafeToNormalizedFilePath' files)
432+
_results <- runAction "GetHie" ide $ uses GetHieAst (map unsafeToNormalizedFilePath' files)
433+
_results <- runAction "GenerateCore" ide $ uses GenerateCore (map unsafeToNormalizedFilePath' files)
434434
let (worked, failed) = partition fst $ zip (map isJust results) files
435435
when (failed /= []) $
436436
putStr $ unlines $ "Files that failed:" : map ((++) " * " . snd) failed

0 commit comments

Comments
 (0)