lib: prefer use of 'parseErrorAt' to generic 'fail'
'fail' will just terminate the current parse branch, whereas here we have encountered a definite error. Also bring the code to get the current working directory inside 'getFilePaths', as it logically belongs there.
This commit is contained in:
parent
c472bb6ff3
commit
c69b16d826
@ -194,26 +194,25 @@ includedirectivep = do
|
|||||||
|
|
||||||
parentpos <- getPosition
|
parentpos <- getPosition
|
||||||
|
|
||||||
curdir <- lift $ expandPath (takeDirectory $ sourceName parentpos) ""
|
filepaths <- getFilePaths parentpos filename
|
||||||
`orRethrowIOError` (show parentpos ++ " locating " ++ filename)
|
|
||||||
|
|
||||||
filepaths <- getFilePaths curdir filename
|
|
||||||
|
|
||||||
forM_ filepaths $ parseChild parentpos
|
forM_ filepaths $ parseChild parentpos
|
||||||
|
|
||||||
void newline
|
void newline
|
||||||
|
|
||||||
where
|
where
|
||||||
getFilePaths curdir filename = do
|
getFilePaths parserpos filename = do
|
||||||
|
curdir <- lift $ expandPath (takeDirectory $ sourceName parserpos) ""
|
||||||
|
`orRethrowIOError` (show parserpos ++ " locating " ++ filename)
|
||||||
-- Compiling filename as a glob pattern works even if it is a literal
|
-- Compiling filename as a glob pattern works even if it is a literal
|
||||||
fileglob <- case tryCompileWith compDefault{errorRecovery=False} filename of
|
fileglob <- case tryCompileWith compDefault{errorRecovery=False} filename of
|
||||||
Right x -> pure x
|
Right x -> pure x
|
||||||
Left e -> fail $ "Invalid glob pattern: " ++ e
|
Left e -> parseErrorAt parserpos $ "Invalid glob pattern: " ++ e
|
||||||
-- Get all matching files in the current working directory
|
-- Get all matching files in the current working directory
|
||||||
filepaths <- liftIO $ globDir1 fileglob curdir
|
filepaths <- liftIO $ globDir1 fileglob curdir
|
||||||
if (not . null) filepaths
|
if (not . null) filepaths
|
||||||
then pure filepaths
|
then pure filepaths
|
||||||
else fail $ "No existing files match pattern: " ++ filename
|
else parseErrorAt parserpos$ "No existing files match pattern: " ++ filename
|
||||||
|
|
||||||
parseChild parentpos filepath = do
|
parseChild parentpos filepath = do
|
||||||
childInput <- lift $ readFilePortably filepath
|
childInput <- lift $ readFilePortably filepath
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user