diff --git a/src/Psalm/Internal/Provider/FakeFileProvider.php b/src/Psalm/Internal/Provider/FakeFileProvider.php index d2ffb9910..5d506bdeb 100644 --- a/src/Psalm/Internal/Provider/FakeFileProvider.php +++ b/src/Psalm/Internal/Provider/FakeFileProvider.php @@ -57,13 +57,13 @@ class FakeFileProvider extends FileProvider /** * @param array $file_extensions - * @param null|callable(string):bool $directory_filter + * @param null|callable(string):bool $filter * * @return list */ - public function getFilesInDir(string $dir_path, array $file_extensions, callable $directory_filter = null): array + public function getFilesInDir(string $dir_path, array $file_extensions, callable $filter = null): array { - $file_paths = parent::getFilesInDir($dir_path, $file_extensions, $directory_filter); + $file_paths = parent::getFilesInDir($dir_path, $file_extensions, $filter); foreach ($this->fake_files as $file_path => $_) { if (strpos(strtolower($file_path), strtolower($dir_path)) === 0) { diff --git a/src/Psalm/Internal/Provider/FileProvider.php b/src/Psalm/Internal/Provider/FileProvider.php index 161b9dc91..6d85e1458 100644 --- a/src/Psalm/Internal/Provider/FileProvider.php +++ b/src/Psalm/Internal/Provider/FileProvider.php @@ -118,11 +118,11 @@ class FileProvider /** * @param array $file_extensions - * @param null|callable(string):bool $directory_filter + * @param null|callable(string):bool $filter * * @return list */ - public function getFilesInDir(string $dir_path, array $file_extensions, callable $directory_filter = null): array + public function getFilesInDir(string $dir_path, array $file_extensions, callable $filter = null): array { $file_paths = []; @@ -131,12 +131,18 @@ class FileProvider FilesystemIterator::CURRENT_AS_PATHNAME | FilesystemIterator::SKIP_DOTS ); - if ($directory_filter !== null) { + if ($filter !== null) { $iterator = new RecursiveCallbackFilterIterator( $iterator, /** @param mixed $_ */ - function (string $current, $_, RecursiveIterator $iterator) use ($directory_filter): bool { - return !$iterator->hasChildren() || $directory_filter($current . DIRECTORY_SEPARATOR); + function (string $current, $_, RecursiveIterator $iterator) use ($filter): bool { + if ($iterator->hasChildren()) { + $path = $current . DIRECTORY_SEPARATOR; + } else { + $path = $current; + } + + return $filter($path); } ); }