Skip to content

Commit

Permalink
Fix types for TokenRemover (#275)
Browse files Browse the repository at this point in the history
  • Loading branch information
kubawerlos committed Apr 11, 2020
1 parent 29f4ca4 commit 95b5322
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 22 deletions.
62 changes: 49 additions & 13 deletions dev-tools/phpstan.neon
@@ -1,16 +1,52 @@
parameters:
autoload_files:
- ../vendor/autoload.php
excludes_analyse:
- ./src/Readme
ignoreErrors:
- '#^Method PhpCsFixerCustomFixers\\Fixer\\[a-zA-Z]+::configure\(\) has parameter \$configuration with no value type specified in iterable type array\.$#'
- '#Cannot call method [a-zA-Z]+\(\) on PhpCsFixer\\Tokenizer\\Token\|null\.$#'
level: max
paths:
- ./src
- ../src
autoload_files:
- ../vendor/autoload.php
excludes_analyse:
- ./src/Readme
ignoreErrors:
- '#^Method PhpCsFixerCustomFixers\\Fixer\\[a-zA-Z]+::configure\(\) has parameter \$configuration with no value type specified in iterable type array\.$#'
- message: '#Cannot call method [a-zA-Z]+\(\) on PhpCsFixer\\Tokenizer\\Token\|null\.$#'
paths:
- ../dev-tools/src/Fixer/PriorityInternalFixer.php
- ../src/Analyzer/ArrayAnalyzer.php
- ../src/Analyzer/DataProviderAnalyzer.php
- ../src/Analyzer/ReferenceAnalyzer.php
- ../src/Analyzer/SwitchAnalyzer.php
- ../src/Fixer/CommentSurroundedBySpacesFixer.php
- ../src/Fixer/CommentedOutFunctionFixer.php
- ../src/Fixer/DataProviderNameFixer.php
- ../src/Fixer/InternalClassCasingFixer.php
- ../src/Fixer/MultilineCommentOpeningClosingAloneFixer.php
- ../src/Fixer/NoCommentedOutCodeFixer.php
- ../src/Fixer/NoDoctrineMigrationsGeneratedCommentFixer.php
- ../src/Fixer/NoDuplicatedArrayKeyFixer.php
- ../src/Fixer/NoImportFromGlobalNamespaceFixer.php
- ../src/Fixer/NoLeadingSlashInGlobalNamespaceFixer.php
- ../src/Fixer/NoNullableBooleanTypeFixer.php
- ../src/Fixer/NoPhpStormGeneratedCommentFixer.php
- ../src/Fixer/NoReferenceInFunctionDefinitionFixer.php
- ../src/Fixer/NoSuperfluousConcatenationFixer.php
- ../src/Fixer/NoUselessCommentFixer.php
- ../src/Fixer/NoUselessDoctrineRepositoryCommentFixer.php
- ../src/Fixer/NoUselessSprintfFixer.php
- ../src/Fixer/NumericLiteralSeparatorFixer.php
- ../src/Fixer/OperatorLinebreakFixer.php
- ../src/Fixer/PhpUnitNoUselessReturnFixer.php
- ../src/Fixer/PhpdocNoIncorrectVarAnnotationFixer.php
- ../src/Fixer/PhpdocNoSuperfluousParamFixer.php
- ../src/Fixer/PhpdocOnlyAllowedAnnotationsFixer.php
- ../src/Fixer/PhpdocParamOrderFixer.php
- ../src/Fixer/PhpdocParamTypeFixer.php
- ../src/Fixer/PhpdocSelfAccessorFixer.php
- ../src/Fixer/PhpdocSingleLineVarFixer.php
- ../src/Fixer/PhpdocTypesTrimFixer.php
- ../src/Fixer/SingleSpaceAfterStatementFixer.php
- ../src/Fixer/SingleSpaceBeforeStatementFixer.php
level: max
paths:
- ./src
- ../src

includes:
- ./vendor/phpstan/phpstan/conf/bleedingEdge.neon
- ./vendor/phpstan/phpstan-strict-rules/rules.neon
- ./vendor/phpstan/phpstan/conf/bleedingEdge.neon
- ./vendor/phpstan/phpstan-strict-rules/rules.neon
36 changes: 27 additions & 9 deletions src/TokenRemover.php
Expand Up @@ -39,17 +39,25 @@ private static function hasMeaningTokenInLineBefore(Tokens $tokens, int $index):
{
/** @var int $prevIndex */
$prevIndex = $tokens->getNonEmptySibling($index, -1);
if (!$tokens[$prevIndex]->isGivenKind([T_OPEN_TAG, T_WHITESPACE])) {

/** @var Token $prevToken */
$prevToken = $tokens[$prevIndex];

if (!$prevToken->isGivenKind([T_OPEN_TAG, T_WHITESPACE])) {
return true;
}

if ($tokens[$prevIndex]->isGivenKind(T_OPEN_TAG) && Preg::match('/\R$/', $tokens[$prevIndex]->getContent()) !== 1) {
if ($prevToken->isGivenKind(T_OPEN_TAG) && Preg::match('/\R$/', $prevToken->getContent()) !== 1) {
return true;
}

if (Preg::match('/\R/', $tokens[$prevIndex]->getContent()) !== 1) {
if (Preg::match('/\R/', $prevToken->getContent()) !== 1) {
$prevPrevIndex = $tokens->getNonEmptySibling($prevIndex, -1);
if (!$tokens[$prevPrevIndex]->isGivenKind(T_OPEN_TAG) || Preg::match('/\R$/', $tokens[$prevPrevIndex]->getContent()) !== 1) {

/** @var Token $prevPrevToken */
$prevPrevToken = $tokens[$prevPrevIndex];

if (!$prevPrevToken->isGivenKind(T_OPEN_TAG) || Preg::match('/\R$/', $prevPrevToken->getContent()) !== 1) {
return true;
}
}
Expand All @@ -63,19 +71,26 @@ private static function hasMeaningTokenInLineAfter(Tokens $tokens, int $index):
if ($nextIndex === null) {
return false;
}
if (!$tokens[$nextIndex]->isGivenKind(T_WHITESPACE)) {

/** @var Token $nextToken */
$nextToken = $tokens[$nextIndex];

if (!$nextToken->isGivenKind(T_WHITESPACE)) {
return true;
}

return Preg::match('/\R/', $tokens[$nextIndex]->getContent()) !== 1;
return Preg::match('/\R/', $nextToken->getContent()) !== 1;
}

private static function handleWhitespaceBefore(Tokens $tokens, int $index): bool
{
if (!$tokens[$index]->isGivenKind(T_WHITESPACE)) {
/** @var Token $token */
$token = $tokens[$index];

if (!$token->isGivenKind(T_WHITESPACE)) {
return false;
}
$contentWithoutTrailingSpaces = Preg::replace('/\h+$/', '', $tokens[$index]->getContent());
$contentWithoutTrailingSpaces = Preg::replace('/\h+$/', '', $token->getContent());

$contentWithoutTrailingSpacesAndNewline = Preg::replace('/\R$/', '', $contentWithoutTrailingSpaces, 1);

Expand All @@ -90,9 +105,12 @@ private static function handleWhitespaceBefore(Tokens $tokens, int $index): bool

private static function handleWhitespaceAfter(Tokens $tokens, int $index, bool $wasNewlineRemoved): void
{
/** @var Token $token */
$token = $tokens[$index];

$pattern = $wasNewlineRemoved ? '/^\h+/' : '/^\h*\R/';

$newContent = Preg::replace($pattern, '', $tokens[$index]->getContent());
$newContent = Preg::replace($pattern, '', $token->getContent());

if ($newContent === '') {
$tokens->clearAt($index);
Expand Down

0 comments on commit 95b5322

Please sign in to comment.