mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-01 08:50:50 +00:00
Updated Rector to commit 38a9718b52
38a9718b52
[CS] Fix dynamic and broken indent detection, allow to configure spacing via RectorConfig::indent() method (#2442)
This commit is contained in:
parent
a020925efc
commit
08cadc8e87
|
@ -61,6 +61,7 @@ return static function (\Rector\Config\RectorConfig $rectorConfig) : void {
|
|||
$rectorConfig->parallel(120, 16, 20);
|
||||
$rectorConfig->disableImportNames();
|
||||
$rectorConfig->importShortClasses();
|
||||
$rectorConfig->indent(' ', 4);
|
||||
$rectorConfig->fileExtensions(['php']);
|
||||
$rectorConfig->nestedChainMethodCallLimit(60);
|
||||
$rectorConfig->cacheDirectory(\sys_get_temp_dir() . '/rector_cached_files');
|
||||
|
|
|
@ -84,7 +84,7 @@ final class ClassAnnotationMatcher
|
|||
if (\strpos($tag, '\\') === \false) {
|
||||
return $this->resolveAsAliased($uses, $tag, $returnNullOnUnknownClass);
|
||||
}
|
||||
if (\strncmp($tag, '\\', \strlen('\\')) === 0 && $this->reflectionProvider->hasClass($tag)) {
|
||||
if ($this->isPreslashedExistingClass($tag)) {
|
||||
// Global or absolute Class
|
||||
return $tag;
|
||||
}
|
||||
|
@ -115,10 +115,17 @@ final class ClassAnnotationMatcher
|
|||
}
|
||||
private function resolveClass(?string $class, bool $returnNullOnUnknownClass) : ?string
|
||||
{
|
||||
if (null === $class) {
|
||||
if ($class === null) {
|
||||
return null;
|
||||
}
|
||||
$resolvedClass = $this->reflectionProvider->hasClass($class) ? $class : null;
|
||||
return $returnNullOnUnknownClass ? $resolvedClass : $class;
|
||||
}
|
||||
private function isPreslashedExistingClass(string $tag) : bool
|
||||
{
|
||||
if (\strncmp($tag, '\\', \strlen('\\')) !== 0) {
|
||||
return \false;
|
||||
}
|
||||
return $this->reflectionProvider->hasClass($tag);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -192,4 +192,13 @@ final class RectorConfig extends \Symfony\Component\DependencyInjection\Loader\C
|
|||
$parameters = $this->parameters();
|
||||
$parameters->set(\Rector\Core\Configuration\Option::CACHE_CLASS, $cacheClass);
|
||||
}
|
||||
/**
|
||||
* @see https://github.com/nikic/PHP-Parser/issues/723#issuecomment-712401963
|
||||
*/
|
||||
public function indent(string $character, int $count) : void
|
||||
{
|
||||
$parameters = $this->parameters();
|
||||
$parameters->set(\Rector\Core\Configuration\Option::INDENT_CHAR, $character);
|
||||
$parameters->set(\Rector\Core\Configuration\Option::INDENT_SIZE, $count);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,11 +16,11 @@ final class VersionResolver
|
|||
/**
|
||||
* @var string
|
||||
*/
|
||||
public const PACKAGE_VERSION = '1c64bb1fb0102d90fb652bf48637dccd18e9b8e3';
|
||||
public const PACKAGE_VERSION = '38a9718b52200740c552af06b4e021da10d2c132';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public const RELEASE_DATE = '2022-06-06 11:35:54';
|
||||
public const RELEASE_DATE = '2022-06-06 11:51:58';
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
|
|
|
@ -183,4 +183,14 @@ final class Option
|
|||
* @var string
|
||||
*/
|
||||
public const MEMORY_LIMIT = 'memory-limit';
|
||||
/**
|
||||
* @deprecated Use @see \Rector\Config\RectorConfig::indent() method
|
||||
* @var string
|
||||
*/
|
||||
public const INDENT_CHAR = 'indent-char';
|
||||
/**
|
||||
* @deprecated Use @see \Rector\Config\RectorConfig::indent() method
|
||||
* @var string
|
||||
*/
|
||||
public const INDENT_SIZE = 'indent-size';
|
||||
}
|
||||
|
|
|
@ -31,4 +31,12 @@ final class RectorConfigProvider
|
|||
{
|
||||
return $this->parameterProvider->provideStringParameter(\Rector\Core\Configuration\Option::SYMFONY_CONTAINER_XML_PATH_PARAMETER);
|
||||
}
|
||||
public function getIndentChar() : string
|
||||
{
|
||||
return $this->parameterProvider->provideStringParameter(\Rector\Core\Configuration\Option::INDENT_CHAR);
|
||||
}
|
||||
public function getIndentSize() : int
|
||||
{
|
||||
return $this->parameterProvider->provideIntParameter(\Rector\Core\Configuration\Option::INDENT_SIZE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,9 +26,9 @@ use PhpParser\Node\Stmt\TraitUse;
|
|||
use PhpParser\Node\Stmt\Use_;
|
||||
use PhpParser\PrettyPrinter\Standard;
|
||||
use Rector\Comments\NodeDocBlock\DocBlockUpdater;
|
||||
use Rector\Core\Configuration\RectorConfigProvider;
|
||||
use Rector\Core\Contract\PhpParser\NodePrinterInterface;
|
||||
use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace;
|
||||
use Rector\Core\PhpParser\Printer\Whitespace\IndentCharacterDetector;
|
||||
use Rector\Core\Util\StringUtils;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
/**
|
||||
|
@ -69,23 +69,23 @@ final class BetterStandardPrinter extends \PhpParser\PrettyPrinter\Standard impl
|
|||
* @var string
|
||||
*/
|
||||
private $tabOrSpaceIndentCharacter = ' ';
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Core\PhpParser\Printer\Whitespace\IndentCharacterDetector
|
||||
*/
|
||||
private $indentCharacterDetector;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Comments\NodeDocBlock\DocBlockUpdater
|
||||
*/
|
||||
private $docBlockUpdater;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Core\Configuration\RectorConfigProvider
|
||||
*/
|
||||
private $rectorConfigProvider;
|
||||
/**
|
||||
* @param mixed[] $options
|
||||
*/
|
||||
public function __construct(\Rector\Core\PhpParser\Printer\Whitespace\IndentCharacterDetector $indentCharacterDetector, \Rector\Comments\NodeDocBlock\DocBlockUpdater $docBlockUpdater, array $options = [])
|
||||
public function __construct(\Rector\Comments\NodeDocBlock\DocBlockUpdater $docBlockUpdater, \Rector\Core\Configuration\RectorConfigProvider $rectorConfigProvider, array $options = [])
|
||||
{
|
||||
$this->indentCharacterDetector = $indentCharacterDetector;
|
||||
$this->docBlockUpdater = $docBlockUpdater;
|
||||
$this->rectorConfigProvider = $rectorConfigProvider;
|
||||
parent::__construct($options);
|
||||
// print return type double colon right after the bracket "function(): string"
|
||||
$this->initializeInsertionMap();
|
||||
|
@ -102,8 +102,7 @@ final class BetterStandardPrinter extends \PhpParser\PrettyPrinter\Standard impl
|
|||
public function printFormatPreserving(array $stmts, array $origStmts, array $origTokens) : string
|
||||
{
|
||||
$newStmts = $this->resolveNewStmts($stmts);
|
||||
// detect per print
|
||||
$this->tabOrSpaceIndentCharacter = $this->indentCharacterDetector->detect($origTokens);
|
||||
$this->tabOrSpaceIndentCharacter = $this->rectorConfigProvider->getIndentChar();
|
||||
$content = parent::printFormatPreserving($newStmts, $origStmts, $origTokens);
|
||||
// add new line in case of added stmts
|
||||
if (\count($stmts) !== \count($origStmts) && !\Rector\Core\Util\StringUtils::isMatch($content, self::NEWLINE_END_REGEX)) {
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
namespace Rector\Core\PhpParser\Printer\Whitespace;
|
||||
|
||||
use RectorPrefix20220606\Nette\Utils\Strings;
|
||||
final class IndentCharacterDetector
|
||||
{
|
||||
/**
|
||||
* Solves https://github.com/rectorphp/rector/issues/1964
|
||||
*
|
||||
* Some files have spaces, some have tabs. Keep the original indent if possible.
|
||||
*
|
||||
* @param mixed[] $tokens
|
||||
*/
|
||||
public function detect(array $tokens) : string
|
||||
{
|
||||
foreach ($tokens as $token) {
|
||||
if ($token[0] === \T_WHITESPACE) {
|
||||
$tokenContent = $token[1];
|
||||
$tabMatches = \RectorPrefix20220606\Nette\Utils\Strings::matchAll($tokenContent, '#^\\t#m');
|
||||
if ($tabMatches !== []) {
|
||||
return "\t";
|
||||
}
|
||||
}
|
||||
}
|
||||
// use space by default
|
||||
return ' ';
|
||||
}
|
||||
}
|
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
|
@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
|
|||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488::getLoader();
|
||||
return ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e::getLoader();
|
||||
|
|
1
vendor/composer/autoload_classmap.php
vendored
1
vendor/composer/autoload_classmap.php
vendored
|
@ -1699,7 +1699,6 @@ return array(
|
|||
'Rector\\Core\\PhpParser\\Printer\\BetterStandardPrinter' => $baseDir . '/src/PhpParser/Printer/BetterStandardPrinter.php',
|
||||
'Rector\\Core\\PhpParser\\Printer\\FormatPerservingPrinter' => $baseDir . '/src/PhpParser/Printer/FormatPerservingPrinter.php',
|
||||
'Rector\\Core\\PhpParser\\Printer\\NodesWithFileDestinationPrinter' => $baseDir . '/src/PhpParser/Printer/NodesWithFileDestinationPrinter.php',
|
||||
'Rector\\Core\\PhpParser\\Printer\\Whitespace\\IndentCharacterDetector' => $baseDir . '/src/PhpParser/Printer/Whitespace/IndentCharacterDetector.php',
|
||||
'Rector\\Core\\PhpParser\\ValueObject\\StmtsAndTokens' => $baseDir . '/src/PhpParser/ValueObject/StmtsAndTokens.php',
|
||||
'Rector\\Core\\Php\\PhpVersionProvider' => $baseDir . '/src/Php/PhpVersionProvider.php',
|
||||
'Rector\\Core\\Php\\PhpVersionResolver\\ProjectComposerJsonPhpVersionResolver' => $baseDir . '/src/Php/PhpVersionResolver/ProjectComposerJsonPhpVersionResolver.php',
|
||||
|
|
14
vendor/composer/autoload_real.php
vendored
14
vendor/composer/autoload_real.php
vendored
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488
|
||||
class ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
|
@ -22,19 +22,19 @@ class ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488
|
|||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit90911ddedcc77b97c226cc5719494488::getInitializer($loader));
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInitbc9348bd16200a47a749f052c9f9892e::getInitializer($loader));
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
|
||||
$includeFiles = \Composer\Autoload\ComposerStaticInit90911ddedcc77b97c226cc5719494488::$files;
|
||||
$includeFiles = \Composer\Autoload\ComposerStaticInitbc9348bd16200a47a749f052c9f9892e::$files;
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire90911ddedcc77b97c226cc5719494488($fileIdentifier, $file);
|
||||
composerRequirebc9348bd16200a47a749f052c9f9892e($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
|
@ -46,7 +46,7 @@ class ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488
|
|||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
function composerRequire90911ddedcc77b97c226cc5719494488($fileIdentifier, $file)
|
||||
function composerRequirebc9348bd16200a47a749f052c9f9892e($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
|
9
vendor/composer/autoload_static.php
vendored
9
vendor/composer/autoload_static.php
vendored
|
@ -4,7 +4,7 @@
|
|||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit90911ddedcc77b97c226cc5719494488
|
||||
class ComposerStaticInitbc9348bd16200a47a749f052c9f9892e
|
||||
{
|
||||
public static $files = array (
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
|
@ -2020,7 +2020,6 @@ class ComposerStaticInit90911ddedcc77b97c226cc5719494488
|
|||
'Rector\\Core\\PhpParser\\Printer\\BetterStandardPrinter' => __DIR__ . '/../..' . '/src/PhpParser/Printer/BetterStandardPrinter.php',
|
||||
'Rector\\Core\\PhpParser\\Printer\\FormatPerservingPrinter' => __DIR__ . '/../..' . '/src/PhpParser/Printer/FormatPerservingPrinter.php',
|
||||
'Rector\\Core\\PhpParser\\Printer\\NodesWithFileDestinationPrinter' => __DIR__ . '/../..' . '/src/PhpParser/Printer/NodesWithFileDestinationPrinter.php',
|
||||
'Rector\\Core\\PhpParser\\Printer\\Whitespace\\IndentCharacterDetector' => __DIR__ . '/../..' . '/src/PhpParser/Printer/Whitespace/IndentCharacterDetector.php',
|
||||
'Rector\\Core\\PhpParser\\ValueObject\\StmtsAndTokens' => __DIR__ . '/../..' . '/src/PhpParser/ValueObject/StmtsAndTokens.php',
|
||||
'Rector\\Core\\Php\\PhpVersionProvider' => __DIR__ . '/../..' . '/src/Php/PhpVersionProvider.php',
|
||||
'Rector\\Core\\Php\\PhpVersionResolver\\ProjectComposerJsonPhpVersionResolver' => __DIR__ . '/../..' . '/src/Php/PhpVersionResolver/ProjectComposerJsonPhpVersionResolver.php',
|
||||
|
@ -3797,9 +3796,9 @@ class ComposerStaticInit90911ddedcc77b97c226cc5719494488
|
|||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit90911ddedcc77b97c226cc5719494488::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit90911ddedcc77b97c226cc5719494488::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit90911ddedcc77b97c226cc5719494488::$classMap;
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInitbc9348bd16200a47a749f052c9f9892e::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInitbc9348bd16200a47a749f052c9f9892e::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInitbc9348bd16200a47a749f052c9f9892e::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
|
|
10
vendor/scoper-autoload.php
vendored
10
vendor/scoper-autoload.php
vendored
|
@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php';
|
|||
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
|
||||
spl_autoload_call('RectorPrefix20220606\AutoloadIncluder');
|
||||
}
|
||||
if (!class_exists('ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488', false) && !interface_exists('ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488', false) && !trait_exists('ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488', false)) {
|
||||
spl_autoload_call('RectorPrefix20220606\ComposerAutoloaderInit90911ddedcc77b97c226cc5719494488');
|
||||
if (!class_exists('ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e', false) && !interface_exists('ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e', false) && !trait_exists('ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e', false)) {
|
||||
spl_autoload_call('RectorPrefix20220606\ComposerAutoloaderInitbc9348bd16200a47a749f052c9f9892e');
|
||||
}
|
||||
if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) {
|
||||
spl_autoload_call('RectorPrefix20220606\Helmich\TypoScriptParser\Parser\AST\Statement');
|
||||
|
@ -56,9 +56,9 @@ if (!function_exists('print_node')) {
|
|||
return \RectorPrefix20220606\print_node(...func_get_args());
|
||||
}
|
||||
}
|
||||
if (!function_exists('composerRequire90911ddedcc77b97c226cc5719494488')) {
|
||||
function composerRequire90911ddedcc77b97c226cc5719494488() {
|
||||
return \RectorPrefix20220606\composerRequire90911ddedcc77b97c226cc5719494488(...func_get_args());
|
||||
if (!function_exists('composerRequirebc9348bd16200a47a749f052c9f9892e')) {
|
||||
function composerRequirebc9348bd16200a47a749f052c9f9892e() {
|
||||
return \RectorPrefix20220606\composerRequirebc9348bd16200a47a749f052c9f9892e(...func_get_args());
|
||||
}
|
||||
}
|
||||
if (!function_exists('scanPath')) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user