From 54dbfc36e7dc30382b3ada090302d09344b83402 Mon Sep 17 00:00:00 2001 From: HypeMC Date: Sat, 23 Jan 2021 11:47:29 +0100 Subject: [PATCH] NativeFunctionInvocationFixer - PHP 8 attributes --- src/Tokenizer/Analyzer/FunctionsAnalyzer.php | 9 ++++++- .../NativeFunctionInvocationFixerTest.php | 15 ++++++++++++ .../Analyzer/FunctionsAnalyzerTest.php | 24 +++++++++++++------ 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/Tokenizer/Analyzer/FunctionsAnalyzer.php b/src/Tokenizer/Analyzer/FunctionsAnalyzer.php index 8a5b74c6ea7..21f83a1d70f 100644 --- a/src/Tokenizer/Analyzer/FunctionsAnalyzer.php +++ b/src/Tokenizer/Analyzer/FunctionsAnalyzer.php @@ -56,7 +56,14 @@ public function isGlobalFunctionCall(Tokens $tokens, $index) $prevIndex = $tokens->getPrevMeaningfulToken($prevIndex); } - if ($tokens[$prevIndex]->isGivenKind([T_DOUBLE_COLON, T_FUNCTION, CT::T_NAMESPACE_OPERATOR, T_NEW, T_OBJECT_OPERATOR, CT::T_RETURN_REF, T_STRING])) { + $possibleKind = [T_DOUBLE_COLON, T_FUNCTION, CT::T_NAMESPACE_OPERATOR, T_NEW, T_OBJECT_OPERATOR, CT::T_RETURN_REF, T_STRING]; + + // @TODO: drop condition when PHP 8.0+ is required + if (\defined('T_ATTRIBUTE')) { + $possibleKind[] = T_ATTRIBUTE; + } + + if ($tokens[$prevIndex]->isGivenKind($possibleKind)) { return false; } diff --git a/tests/Fixer/FunctionNotation/NativeFunctionInvocationFixerTest.php b/tests/Fixer/FunctionNotation/NativeFunctionInvocationFixerTest.php index 167fe160a05..3d4b78ba6af 100644 --- a/tests/Fixer/FunctionNotation/NativeFunctionInvocationFixerTest.php +++ b/tests/Fixer/FunctionNotation/NativeFunctionInvocationFixerTest.php @@ -645,4 +645,19 @@ public function testFixPrePHP80() ' ); } + + /** + * @requires PHP 8.0 + */ + public function testFixWithAttributesAndStrict() + { + $this->testFixWithConfiguredInclude( + ' true] + ); + } } diff --git a/tests/Tokenizer/Analyzer/FunctionsAnalyzerTest.php b/tests/Tokenizer/Analyzer/FunctionsAnalyzerTest.php index 594d3793525..4f4b73f2a5c 100644 --- a/tests/Tokenizer/Analyzer/FunctionsAnalyzerTest.php +++ b/tests/Tokenizer/Analyzer/FunctionsAnalyzerTest.php @@ -348,32 +348,42 @@ public function provideIsGlobalFunctionCallPhp74Cases() } /** - * @param int[] $globalFunctionIndexes + * @param bool $isFunctionIndex * @param string $code + * @param int $index * * @dataProvider provideIsGlobalFunctionCallPhp80Cases * @requires PHP 8.0 */ - public function testIsGlobalFunctionCallPhp80(array $globalFunctionIndexes, $code) + public function testIsGlobalFunctionCallPhp80($isFunctionIndex, $code, $index) { $tokens = Tokens::fromCode($code); $analyzer = new FunctionsAnalyzer(); - foreach ($globalFunctionIndexes as $index) { - static::assertTrue($analyzer->isGlobalFunctionCall($tokens, $index)); - } + static::assertSame($isFunctionIndex, $analyzer->isGlobalFunctionCall($tokens, $index)); } public function provideIsGlobalFunctionCallPhp80Cases() { yield [ - [8], + true, '