Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
Morerice committed Dec 7, 2019
2 parents 8be584e + 2ecd8dc commit e6592be
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 28 deletions.
70 changes: 68 additions & 2 deletions package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>gsherwood@squiz.net</email>
<active>yes</active>
</lead>
<date>2019-10-28</date>
<time>15:31:00</time>
<date>2019-12-04</date>
<time>15:42:00</time>
<version>
<release>3.5.3</release>
<api>3.5.3</api>
Expand Down Expand Up @@ -2025,6 +2025,72 @@ http://pear.php.net/dtd/package-2.0.xsd">
</filelist>
</phprelease>
<changelog>
<release>
<version>
<release>3.5.3</release>
<api>3.5.3</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2019-12-04</date>
<license uri="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt">BSD License</license>
<notes>
- 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
</notes>
</release>
<release>
<version>
<release>3.5.2</release>
Expand Down
3 changes: 2 additions & 1 deletion src/Filters/Filter.php
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
14 changes: 14 additions & 0 deletions src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
Expand Down
50 changes: 25 additions & 25 deletions src/Util/Tokens.php
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ final class Tokens
/**
* The token weightings.
*
* @var array<int, int>
* @var array<int|string, int>
*/
public static $weightings = [
T_CLASS => 1000,
Expand Down Expand Up @@ -226,7 +226,7 @@ final class Tokens
/**
* Tokens that represent assignments.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $assignmentTokens = [
T_EQUAL => T_EQUAL,
Expand All @@ -250,7 +250,7 @@ final class Tokens
/**
* Tokens that represent equality comparisons.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $equalityTokens = [
T_IS_EQUAL => T_IS_EQUAL,
Expand All @@ -264,7 +264,7 @@ final class Tokens
/**
* Tokens that represent comparison operator.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $comparisonTokens = [
T_IS_EQUAL => T_IS_EQUAL,
Expand All @@ -282,7 +282,7 @@ final class Tokens
/**
* Tokens that represent arithmetic operators.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $arithmeticTokens = [
T_PLUS => T_PLUS,
Expand All @@ -296,7 +296,7 @@ final class Tokens
/**
* Tokens that perform operations.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $operators = [
T_MINUS => T_MINUS,
Expand All @@ -317,7 +317,7 @@ final class Tokens
/**
* Tokens that perform boolean operations.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $booleanOperators = [
T_BOOLEAN_AND => T_BOOLEAN_AND,
Expand All @@ -330,7 +330,7 @@ final class Tokens
/**
* Tokens that represent casting.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $castTokens = [
T_INT_CAST => T_INT_CAST,
Expand All @@ -346,7 +346,7 @@ final class Tokens
/**
* Token types that open parenthesis.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $parenthesisOpeners = [
T_ARRAY => T_ARRAY,
Expand All @@ -367,7 +367,7 @@ final class Tokens
/**
* Tokens that are allowed to open scopes.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $scopeOpeners = [
T_CLASS => T_CLASS,
Expand Down Expand Up @@ -399,7 +399,7 @@ final class Tokens
/**
* Tokens that represent scope modifiers.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $scopeModifiers = [
T_PRIVATE => T_PRIVATE,
Expand All @@ -410,7 +410,7 @@ final class Tokens
/**
* Tokens that can prefix a method name
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $methodPrefixes = [
T_PRIVATE => T_PRIVATE,
Expand All @@ -424,7 +424,7 @@ final class Tokens
/**
* Tokens that open code blocks.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $blockOpeners = [
T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
Expand All @@ -436,7 +436,7 @@ final class Tokens
/**
* Tokens that don't represent code.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $emptyTokens = [
T_WHITESPACE => T_WHITESPACE,
Expand All @@ -458,7 +458,7 @@ final class Tokens
/**
* Tokens that are comments.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $commentTokens = [
T_COMMENT => T_COMMENT,
Expand All @@ -479,7 +479,7 @@ final class Tokens
/**
* Tokens that are comments containing PHPCS instructions.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $phpcsCommentTokens = [
T_PHPCS_ENABLE => T_PHPCS_ENABLE,
Expand All @@ -494,7 +494,7 @@ final class Tokens
*
* Note that T_STRINGS are NOT represented in this list.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $stringTokens = [
T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
Expand All @@ -504,7 +504,7 @@ final class Tokens
/**
* Tokens that represent text strings.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $textStringTokens = [
T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
Expand All @@ -517,7 +517,7 @@ final class Tokens
/**
* Tokens that represent brackets and parenthesis.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $bracketTokens = [
T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET,
Expand All @@ -531,7 +531,7 @@ final class Tokens
/**
* Tokens that include files.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $includeTokens = [
T_REQUIRE_ONCE => T_REQUIRE_ONCE,
Expand All @@ -543,7 +543,7 @@ final class Tokens
/**
* Tokens that make up a heredoc string.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $heredocTokens = [
T_START_HEREDOC => T_START_HEREDOC,
Expand All @@ -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<int, int>
* @var array<int|string, int|string>
*/
public static $functionNameTokens = [
T_STRING => T_STRING,
Expand All @@ -580,7 +580,7 @@ final class Tokens
/**
* Tokens that open class and object scopes.
*
* @var array<int, int>
* @var array<int|string, int|string>
*/
public static $ooScopeTokens = [
T_CLASS => T_CLASS,
Expand Down Expand Up @@ -623,8 +623,8 @@ public static function tokenName($token)
*
* Returns false if there are no weightings for any of the specified tokens.
*
* @param array<int, int> $tokens The token types to get the highest weighted
* type for.
* @param array<int|string> $tokens The token types to get the highest weighted
* type for.
*
* @return int The highest weighted token.
*/
Expand Down
3 changes: 3 additions & 0 deletions tests/AllTests.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@

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';
} else {
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
Expand Down

0 comments on commit e6592be

Please sign in to comment.