From d198f4a249035c866c53307f24d57c991ebf4c32 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 10 Jul 2021 15:31:58 +0200 Subject: [PATCH] [PHP 8.0] Fix quotes in attribute multiline text --- .../PlainValueParser.php | 15 ++------ .../Fixture/nested_quoted_asterisk.php.inc | 37 +++++++++++++++++++ .../FluentChainMethodCallNodeAnalyzer.php | 19 +++++----- 3 files changed, 50 insertions(+), 21 deletions(-) create mode 100644 rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/nested_quoted_asterisk.php.inc diff --git a/packages/BetterPhpDocParser/PhpDocParser/StaticDoctrineAnnotationParser/PlainValueParser.php b/packages/BetterPhpDocParser/PhpDocParser/StaticDoctrineAnnotationParser/PlainValueParser.php index aeddd769bc3..f636366e982 100644 --- a/packages/BetterPhpDocParser/PhpDocParser/StaticDoctrineAnnotationParser/PlainValueParser.php +++ b/packages/BetterPhpDocParser/PhpDocParser/StaticDoctrineAnnotationParser/PlainValueParser.php @@ -82,21 +82,14 @@ public function parseValue( $start = $tokenIterator->currentPosition(); - if ($tokenIterator->isCurrentTokenType(Lexer::TOKEN_PHPDOC_EOL)) { - while ($tokenIterator->isCurrentTokenTypes( - [ - Lexer::TOKEN_PHPDOC_EOL, - Lexer::TOKEN_IDENTIFIER, - Lexer::TOKEN_COLON, - Lexer::TOKEN_SINGLE_QUOTED_STRING, - ] - )) { + // from "quote to quote" + if ($currentTokenValue === '"') { + do { $tokenIterator->next(); - } + } while (! str_contains($tokenIterator->currentTokenValue(), '"')); } $end = $tokenIterator->currentPosition(); - if ($start + 1 < $end) { return $tokenIterator->printFromTo($start, $end); } diff --git a/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/nested_quoted_asterisk.php.inc b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/nested_quoted_asterisk.php.inc new file mode 100644 index 00000000000..73714d707cd --- /dev/null +++ b/rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/nested_quoted_asterisk.php.inc @@ -0,0 +1,37 @@ + +----- + diff --git a/rules/Defluent/NodeAnalyzer/FluentChainMethodCallNodeAnalyzer.php b/rules/Defluent/NodeAnalyzer/FluentChainMethodCallNodeAnalyzer.php index ad6e09ff75d..fa147f57656 100644 --- a/rules/Defluent/NodeAnalyzer/FluentChainMethodCallNodeAnalyzer.php +++ b/rules/Defluent/NodeAnalyzer/FluentChainMethodCallNodeAnalyzer.php @@ -13,7 +13,6 @@ use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Name; -use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Return_; use PhpParser\NodeFinder; @@ -221,15 +220,6 @@ public function resolveRootMethodCall(MethodCall $methodCall): ?MethodCall return null; } - private function isCall(Expr $expr): bool - { - if ($expr instanceof MethodCall) { - return true; - } - - return $expr instanceof StaticCall; - } - public function isMethodCallReturnThis(MethodCall $methodCall): bool { $classMethod = $this->astResolver->resolveClassMethodFromMethodCall($methodCall); @@ -255,6 +245,15 @@ public function isMethodCallReturnThis(MethodCall $methodCall): bool return false; } + private function isCall(Expr $expr): bool + { + if ($expr instanceof MethodCall) { + return true; + } + + return $expr instanceof StaticCall; + } + private function isMethodCallCreatingNewInstance(MethodCall $methodCall): bool { $classMethod = $this->astResolver->resolveClassMethodFromMethodCall($methodCall);