diff --git a/package.xml b/package.xml
index 5111fb51f6..7c9e2387e9 100644
--- a/package.xml
+++ b/package.xml
@@ -14,8 +14,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
gsherwood@squiz.netyes
- 2019-10-28
-
+ 2019-12-04
+
3.5.33.5.3
@@ -2025,6 +2025,72 @@ http://pear.php.net/dtd/package-2.0.xsd">
+
+
+ 3.5.3
+ 3.5.3
+
+
+ stable
+ stable
+
+ 2019-12-04
+ BSD 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
+
+ 3.5.2
diff --git a/src/Filters/Filter.php b/src/Filters/Filter.php
index a54015525b..fa7360f0cd 100644
--- a/src/Filters/Filter.php
+++ b/src/Filters/Filter.php
@@ -132,7 +132,8 @@ public function accept()
*/
public function getChildren()
{
- $children = new static(
+ $filterClass = get_called_class();
+ $children = new $filterClass(
new \RecursiveDirectoryIterator($this->current(), (\RecursiveDirectoryIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS)),
$this->basedir,
$this->config,
diff --git a/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php b/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php
index 261f4399fb..708634e973 100644
--- a/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php
+++ b/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php
@@ -15,6 +15,20 @@ class ExecutableFileUnitTest extends AbstractSniffUnitTest
{
+ /**
+ * Should this test be skipped for some reason.
+ *
+ * @return void
+ */
+ protected function shouldSkipTest()
+ {
+ // PEAR doesn't preserve the executable flag, so skip
+ // tests when running in a PEAR install.
+ return $GLOBALS['PHP_CODESNIFFER_PEAR'];
+
+ }//end shouldSkipTest()
+
+
/**
* Returns the lines where errors should occur.
*
diff --git a/src/Util/Tokens.php b/src/Util/Tokens.php
index d0623fb0a0..48ac76b7c0 100644
--- a/src/Util/Tokens.php
+++ b/src/Util/Tokens.php
@@ -145,7 +145,7 @@ final class Tokens
/**
* The token weightings.
*
- * @var array
+ * @var array
*/
public static $weightings = [
T_CLASS => 1000,
@@ -226,7 +226,7 @@ final class Tokens
/**
* Tokens that represent assignments.
*
- * @var array
+ * @var array
*/
public static $assignmentTokens = [
T_EQUAL => T_EQUAL,
@@ -250,7 +250,7 @@ final class Tokens
/**
* Tokens that represent equality comparisons.
*
- * @var array
+ * @var array
*/
public static $equalityTokens = [
T_IS_EQUAL => T_IS_EQUAL,
@@ -264,7 +264,7 @@ final class Tokens
/**
* Tokens that represent comparison operator.
*
- * @var array
+ * @var array
*/
public static $comparisonTokens = [
T_IS_EQUAL => T_IS_EQUAL,
@@ -282,7 +282,7 @@ final class Tokens
/**
* Tokens that represent arithmetic operators.
*
- * @var array
+ * @var array
*/
public static $arithmeticTokens = [
T_PLUS => T_PLUS,
@@ -296,7 +296,7 @@ final class Tokens
/**
* Tokens that perform operations.
*
- * @var array
+ * @var array
*/
public static $operators = [
T_MINUS => T_MINUS,
@@ -317,7 +317,7 @@ final class Tokens
/**
* Tokens that perform boolean operations.
*
- * @var array
+ * @var array
*/
public static $booleanOperators = [
T_BOOLEAN_AND => T_BOOLEAN_AND,
@@ -330,7 +330,7 @@ final class Tokens
/**
* Tokens that represent casting.
*
- * @var array
+ * @var array
*/
public static $castTokens = [
T_INT_CAST => T_INT_CAST,
@@ -346,7 +346,7 @@ final class Tokens
/**
* Token types that open parenthesis.
*
- * @var array
+ * @var array
*/
public static $parenthesisOpeners = [
T_ARRAY => T_ARRAY,
@@ -367,7 +367,7 @@ final class Tokens
/**
* Tokens that are allowed to open scopes.
*
- * @var array
+ * @var array
*/
public static $scopeOpeners = [
T_CLASS => T_CLASS,
@@ -399,7 +399,7 @@ final class Tokens
/**
* Tokens that represent scope modifiers.
*
- * @var array
+ * @var array
*/
public static $scopeModifiers = [
T_PRIVATE => T_PRIVATE,
@@ -410,7 +410,7 @@ final class Tokens
/**
* Tokens that can prefix a method name
*
- * @var array
+ * @var array
*/
public static $methodPrefixes = [
T_PRIVATE => T_PRIVATE,
@@ -424,7 +424,7 @@ final class Tokens
/**
* Tokens that open code blocks.
*
- * @var array
+ * @var array
*/
public static $blockOpeners = [
T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
@@ -436,7 +436,7 @@ final class Tokens
/**
* Tokens that don't represent code.
*
- * @var array
+ * @var array
*/
public static $emptyTokens = [
T_WHITESPACE => T_WHITESPACE,
@@ -458,7 +458,7 @@ final class Tokens
/**
* Tokens that are comments.
*
- * @var array
+ * @var array
*/
public static $commentTokens = [
T_COMMENT => T_COMMENT,
@@ -479,7 +479,7 @@ final class Tokens
/**
* Tokens that are comments containing PHPCS instructions.
*
- * @var array
+ * @var array
*/
public static $phpcsCommentTokens = [
T_PHPCS_ENABLE => T_PHPCS_ENABLE,
@@ -494,7 +494,7 @@ final class Tokens
*
* Note that T_STRINGS are NOT represented in this list.
*
- * @var array
+ * @var array
*/
public static $stringTokens = [
T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
@@ -504,7 +504,7 @@ final class Tokens
/**
* Tokens that represent text strings.
*
- * @var array
+ * @var array
*/
public static $textStringTokens = [
T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
@@ -517,7 +517,7 @@ final class Tokens
/**
* Tokens that represent brackets and parenthesis.
*
- * @var array
+ * @var array
*/
public static $bracketTokens = [
T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
@@ -531,7 +531,7 @@ final class Tokens
/**
* Tokens that include files.
*
- * @var array
+ * @var array
*/
public static $includeTokens = [
T_REQUIRE_ONCE => T_REQUIRE_ONCE,
@@ -543,7 +543,7 @@ final class Tokens
/**
* Tokens that make up a heredoc string.
*
- * @var array
+ * @var array
*/
public static $heredocTokens = [
T_START_HEREDOC => T_START_HEREDOC,
@@ -560,7 +560,7 @@ final class Tokens
* Mostly, these are just strings. But PHP tokenizes some language
* constructs and functions using their own tokens.
*
- * @var array
+ * @var array
*/
public static $functionNameTokens = [
T_STRING => T_STRING,
@@ -580,7 +580,7 @@ final class Tokens
/**
* Tokens that open class and object scopes.
*
- * @var array
+ * @var array
*/
public static $ooScopeTokens = [
T_CLASS => T_CLASS,
@@ -623,8 +623,8 @@ public static function tokenName($token)
*
* Returns false if there are no weightings for any of the specified tokens.
*
- * @param array $tokens The token types to get the highest weighted
- * type for.
+ * @param array $tokens The token types to get the highest weighted
+ * type for.
*
* @return int The highest weighted token.
*/
diff --git a/tests/AllTests.php b/tests/AllTests.php
index 7b8abb7dea..4ed001dfed 100644
--- a/tests/AllTests.php
+++ b/tests/AllTests.php
@@ -9,6 +9,8 @@
namespace PHP_CodeSniffer\Tests;
+$GLOBALS['PHP_CODESNIFFER_PEAR'] = false;
+
if (is_file(__DIR__.'/../autoload.php') === true) {
include_once 'Core/AllTests.php';
include_once 'Standards/AllSniffs.php';
@@ -16,6 +18,7 @@
include_once 'CodeSniffer/Core/AllTests.php';
include_once 'CodeSniffer/Standards/AllSniffs.php';
include_once 'FileList.php';
+ $GLOBALS['PHP_CODESNIFFER_PEAR'] = true;
}
// PHPUnit 7 made the TestSuite run() method incompatible with