diff --git a/package.xml b/package.xml
index 7c9e2387e9..6704cc7390 100644
--- a/package.xml
+++ b/package.xml
@@ -17,8 +17,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
2019-12-04
- 3.5.3
- 3.5.3
+ 3.5.4
+ 3.5.4stable
@@ -26,58 +26,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
BSD 3-Clause License
- - The PHP 7.4 T_FN token has been made available for older versions
- -- T_FN represents the fn string used for arrow functions
- -- The double arrow becomes the scope opener, and uses a new T_FN_ARROW token type
- -- The token after the statement (normally a semicolon) becomes the scope closer
- -- The token is also associated with the opening and closing parenthesis of the statement
- -- Any functions named "fn" will cause have a T_FN token for the function name, but have no scope information
- -- Thanks to Michał Bundyra for the help with this change
- - PHP 7.4 numeric separators are now tokenized in the same way when using older PHP versions
- -- Previously, a number like 1_000 would tokenize as T_LNUMBER (1), T_STRING (_000)
- -- Now, the number tokenizes as T_LNUMBER (1_000)
- -- Sniff developers should consider how numbers with underscores impact their custom sniffs
- - The PHPCS file cache now takes file permissions into account
- -- The cache is now invalidated for a file when its permissions are changed
- - File::getMethodParameters() now supports arrow functions
- - File::getMethodProperties() now supports arrow functions
- - Added Fixer::changeCodeBlockIndent() to change the indent of a code block while auto-fixing
- -- Can be used to either increase or decrease the indent
- -- Useful when moving the start position of something like a closure, where you want the content to also move
- - Added Generic.Files.ExecutableFile sniff
- -- Ensures that files are not executable
- -- Thanks to Matthew Peveler for the contribution
- - Generic.CodeAnalysis.EmptyPhpStatement now reports unnecessary semicolons after control structure closing braces
- -- Thanks to Vincent Langlet for the patch
- - Generic.PHP.LowerCaseKeyword now enforces that the "fn" keyword is lowercase
- -- Thanks to Michał Bundyra for the patch
- - Generic.WhiteSpace.ScopeIndent now supports static arrow functions
- - PEAR.Functions.FunctionCallSignature now adjusts the indent of function argument contents during auto-fixing
- -- Previously, only the first line of an argument was changed, leading to inconsistent indents
- -- This change also applies to PSR2.Methods.FunctionCallSignature
- - PSR2.ControlStructures.ControlStructureSpacing now checks whitespace before the closing parenthesis of multi-line control structures
- -- Previously, it incorrectly applied the whitespace check for single-line definitions only
- - PSR12.Functions.ReturnTypeDeclaration now checks the return type of arrow functions
- -- Thanks to Michał Bundyra for the patch
- - PSR12.Traits.UseDeclaration now ensures all trait import statements are grouped together
- -- Previously, the trait import section of the class ended when the first non-import statement was found
- -- Checking now continues throughout the class to ensure all statements are grouped together
- -- This also ensures that empty lines are not requested after an import statement that isn't the last one
- - Squiz.Functions.LowercaseFunctionKeywords now enforces that the "fn" keyword is lowercase
- -- Thanks to Michał Bundyra for the patch
- - Fixed bug #2586 : Generic.WhiteSpace.ScopeIndent false positives when indenting open tags at a non tab-stop
- - Fixed bug #2638 : Squiz.CSS.DuplicateClassDefinitionSniff sees comments as part of the class name
- -- Thanks to Raphael Horber for the patch
- - Fixed bug #2640 : Squiz.WhiteSpace.OperatorSpacing false positives for some negation operators
- -- Thanks to Jakub Chábek and Juliette Reinders Folmer for the patch
- - Fixed bug #2674 : Squiz.Functions.FunctionDeclarationArgumentSpacing prints wrong argument name in error message
- - Fixed bug #2676 : PSR12.Files.FileHeader locks up when file ends with multiple inline comments
- - Fixed bug #2678 : PSR12.Classes.AnonClassDeclaration incorrectly enforcing that closing brace be on a line by itself
- - Fixed bug #2685 : File::getMethodParameters() setting typeHintEndToken for vars with no type hint
- -- Thanks to Juliette Reinders Folmer for the patch
- - Fixed bug #2694 : AbstractArraySniff produces invalid indices when using ternary operator
- -- Thanks to Michał Bundyra for the patch
- - Fixed bug #2702 : Generic.WhiteSpace.ScopeIndent false positive when using ternary operator with short arrays
+ - Fixed bug #2751 : Autoload relative paths first to avoid confusion with files from the global include path
+ -- Thanks to Klaus Purer for the patch
diff --git a/src/Config.php b/src/Config.php
index 577a023f84..89e4f57fc8 100644
--- a/src/Config.php
+++ b/src/Config.php
@@ -23,7 +23,7 @@ class Config
*
* @var string
*/
- const VERSION = '3.5.3';
+ const VERSION = '3.5.4';
/**
* Package stability; either stable, beta or alpha.
diff --git a/src/Ruleset.php b/src/Ruleset.php
index f1f28397fe..2e21f95160 100644
--- a/src/Ruleset.php
+++ b/src/Ruleset.php
@@ -349,7 +349,7 @@ public function processRuleset($rulesetPath, $depth=0)
$ownSniffs = $this->expandSniffDirectory($sniffDir, $depth);
}
- // Included custom autoloaders.
+ // Include custom autoloaders.
foreach ($ruleset->{'autoload'} as $autoload) {
if ($this->shouldProcessElement($autoload) === false) {
continue;
@@ -360,7 +360,7 @@ public function processRuleset($rulesetPath, $depth=0)
// Try relative autoload paths first.
$relativePath = Util\Common::realPath(dirname($rulesetPath).DIRECTORY_SEPARATOR.$autoloadPath);
- if ($relativePath !== false && is_file($$relativePath) === true) {
+ if ($relativePath !== false && is_file($relativePath) === true) {
$autoloadPath = $relativePath;
} else if (is_file($autoloadPath) === false) {
throw new RuntimeException('The specified autoload file "'.$autoload.'" does not exist');