Skip to content

Commit

Permalink
Standardize relative path checks
Browse files Browse the repository at this point in the history
  • Loading branch information
theodorejb committed Dec 6, 2023
1 parent 3e91899 commit 61d8f18
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 25 deletions.
6 changes: 3 additions & 3 deletions src/Psalm/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -1315,10 +1315,10 @@ private static function fromXmlAndPaths(
}

// we need an absolute path for checks
if ($path[0] !== '/' && DIRECTORY_SEPARATOR === '/') {
$prospective_path = $base_dir . DIRECTORY_SEPARATOR . $path;
} else {
if (Path::isAbsolute($path)) {
$prospective_path = $path;
} else {
$prospective_path = $base_dir . DIRECTORY_SEPARATOR . $path;
}

// will report an error when config is loaded anyway
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use Psalm\IssueBuffer;
use Psalm\Plugin\EventHandler\Event\AddRemoveTaintsEvent;
use Psalm\Type\TaintKind;
use Symfony\Component\Filesystem\Path;

use function constant;
use function defined;
Expand Down Expand Up @@ -93,13 +94,7 @@ public static function analyze(
$include_path = self::resolveIncludePath($path_to_file, dirname($statements_analyzer->getFilePath()));
$path_to_file = $include_path ?: $path_to_file;

if (DIRECTORY_SEPARATOR === '/') {
$is_path_relative = $path_to_file[0] !== DIRECTORY_SEPARATOR;
} else {
$is_path_relative = !preg_match('~^[A-Z]:\\\\~i', $path_to_file);
}

if ($is_path_relative) {
if (Path::isRelative($path_to_file)) {
$path_to_file = $config->base_dir . DIRECTORY_SEPARATOR . $path_to_file;
}
} else {
Expand Down Expand Up @@ -285,13 +280,7 @@ public static function getPathTo(
string $file_name,
Config $config
): ?string {
if (DIRECTORY_SEPARATOR === '/') {
$is_path_relative = $file_name[0] !== DIRECTORY_SEPARATOR;
} else {
$is_path_relative = !preg_match('~^[A-Z]:\\\\~i', $file_name);
}

if ($is_path_relative) {
if (Path::isRelative($file_name)) {
$file_name = $config->base_dir . DIRECTORY_SEPARATOR . $file_name;
}

Expand Down
10 changes: 2 additions & 8 deletions src/Psalm/Internal/PhpVisitor/Reflector/ExpressionScanner.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
use Psalm\Storage\FileStorage;
use Psalm\Storage\FunctionLikeStorage;
use Psalm\Type;
use Symfony\Component\Filesystem\Path;

use function assert;
use function defined;
use function dirname;
use function explode;
use function in_array;
use function preg_match;
use function strpos;
use function strtolower;
use function substr;
Expand Down Expand Up @@ -316,13 +316,7 @@ public static function visitInclude(
$include_path = IncludeAnalyzer::resolveIncludePath($path_to_file, dirname($file_storage->file_path));
$path_to_file = $include_path ?: $path_to_file;

if (DIRECTORY_SEPARATOR === '/') {
$is_path_relative = $path_to_file[0] !== DIRECTORY_SEPARATOR;
} else {
$is_path_relative = !preg_match('~^[A-Z]:\\\\~i', $path_to_file);
}

if ($is_path_relative) {
if (Path::isRelative($path_to_file)) {
$path_to_file = $config->base_dir . DIRECTORY_SEPARATOR . $path_to_file;
}
} else {
Expand Down

0 comments on commit 61d8f18

Please sign in to comment.