diff --git a/rules/coding-style/src/Rector/Variable/UnderscoreToPascalCaseVariableNameRector.php b/rules/coding-style/src/Rector/Variable/UnderscoreToPascalCaseVariableNameRector.php index 87804810735..981f27e62cb 100644 --- a/rules/coding-style/src/Rector/Variable/UnderscoreToPascalCaseVariableNameRector.php +++ b/rules/coding-style/src/Rector/Variable/UnderscoreToPascalCaseVariableNameRector.php @@ -7,6 +7,7 @@ namespace Rector\CodingStyle\Rector\Variable; use Nette\Utils\Strings; use PhpParser\Node; use PhpParser\Node\Expr\Variable; +use Rector\Core\Php\ReservedKeywordAnalyzer; use Rector\Core\Rector\AbstractRector; use Rector\Core\RectorDefinition\CodeSample; use Rector\Core\RectorDefinition\RectorDefinition; @@ -17,6 +18,16 @@ use Rector\Core\Util\StaticRectorStrings; */ final class UnderscoreToPascalCaseVariableNameRector extends AbstractRector { + /** + * @var ReservedKeywordAnalyzer + */ + private $reservedKeywordAnalyzer; + + public function __construct(ReservedKeywordAnalyzer $reservedKeywordAnalyzer) + { + $this->reservedKeywordAnalyzer = $reservedKeywordAnalyzer; + } + public function getDefinition(): RectorDefinition { return new RectorDefinition('Change under_score names to pascalCase', [ @@ -67,6 +78,10 @@ PHP return null; } + if ($this->reservedKeywordAnalyzer->isNativeVariable($nodeName)) { + return null; + } + $pascalCaseName = StaticRectorStrings::underscoreToPascalCase($nodeName); if ($pascalCaseName === 'this') { return null; diff --git a/rules/coding-style/tests/Rector/Variable/UnderscoreToPascalCaseVariableNameRector/Fixture/skip_underscored_reserved_names.php.inc b/rules/coding-style/tests/Rector/Variable/UnderscoreToPascalCaseVariableNameRector/Fixture/skip_underscored_reserved_names.php.inc new file mode 100644 index 00000000000..66ac6fe4862 --- /dev/null +++ b/rules/coding-style/tests/Rector/Variable/UnderscoreToPascalCaseVariableNameRector/Fixture/skip_underscored_reserved_names.php.inc @@ -0,0 +1,11 @@ +