diff --git a/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php b/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php index 01aa74f71f6a6a32c2b4505213d0e09f1ccf82c8..ee6e564f169a17b1c6fc7cb5860f42ef4eaa48b0 100644 --- a/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php +++ b/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php @@ -60,7 +60,7 @@ class FullyQualifiedNamespaceSniff implements Sniff } // We are only interested in a backslash embedded between strings, which - // means this is a class reference with more than once namespace part. + // means this is a class reference with more than one namespace part. if ($tokens[($stackPtr - 1)]['code'] !== T_STRING || $tokens[($stackPtr + 1)]['code'] !== T_STRING) { return; } @@ -76,7 +76,10 @@ class FullyQualifiedNamespaceSniff implements Sniff // If this is a namespaced function call then ignore this because use // statements for functions are not possible in PHP 5.5 and lower. $after = $phpcsFile->findNext([T_STRING, T_NS_SEPARATOR, T_WHITESPACE], $stackPtr, null, true); - if ($tokens[$after]['code'] === T_OPEN_PARENTHESIS && $tokens[$before]['code'] !== T_NEW) { + if ($tokens[$after]['code'] === T_OPEN_PARENTHESIS + && $tokens[$before]['code'] !== T_NEW + && $tokens[$before]['code'] !== T_ATTRIBUTE + ) { return ($after + 1); } diff --git a/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.4.inc b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.4.inc new file mode 100644 index 0000000000000000000000000000000000000000..1badbe14135fe07d7bd3d58de76b3defb0a0f36b --- /dev/null +++ b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.4.inc @@ -0,0 +1,22 @@ +<?php + +namespace Drupal\action_link_test_plugins\Plugin\StateAction; + +use Drupal\action_link\Entity\ActionLinkInterface; +use Drupal\action_link\Plugin\StateAction\StateActionBase; +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Session\AccountInterface; + +/** + * Test action which is always usable. + */ +#[\Drupal\action_link\Attribute\StateAction( + id: 'test_always', + label: new \Drupal\Core\StringTranslation\TranslatableMarkup('Test Always'), + description: new \Drupal\Core\StringTranslation\TranslatableMarkup('Test Always'), + directions: [ + 'change' => 'change', + ] +)] +class TestAlways extends StateActionBase { +} diff --git a/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.4.inc.fixed b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.4.inc.fixed new file mode 100644 index 0000000000000000000000000000000000000000..07dd59e18f4bfb763974df30e702abdcac3704e1 --- /dev/null +++ b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.4.inc.fixed @@ -0,0 +1,21 @@ +<?php + +namespace Drupal\action_link_test_plugins\Plugin\StateAction; + +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\action_link\Attribute\StateAction; +use Drupal\action_link\Plugin\StateAction\StateActionBase; + +/** + * Test action which is always usable. + */ +#[StateAction( + id: 'test_always', + label: new TranslatableMarkup('Test Always'), + description: new TranslatableMarkup('Test Always'), + directions: [ + 'change' => 'change', + ] +)] +class TestAlways extends StateActionBase { +} diff --git a/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.php b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.php index 41b521c613919728cd5b51ddcbc7367774e35479..1ec06c33680e99b0b9bd14c4451e2da24b0e1b39 100644 --- a/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.php +++ b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.php @@ -37,7 +37,13 @@ class FullyQualifiedNamespaceUnitTest extends CoderSniffUnitTest return [8 => 1]; case 'FullyQualifiedNamespaceUnitTest.3.inc': return [10 => 2]; - } + case 'FullyQualifiedNamespaceUnitTest.4.inc': + return [ + 13 => 1, + 15 => 1, + 16 => 1, + ]; + }//end switch return []; @@ -75,6 +81,7 @@ class FullyQualifiedNamespaceUnitTest extends CoderSniffUnitTest __DIR__.'/FullyQualifiedNamespaceUnitTest.1.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.2.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.3.inc', + __DIR__.'/FullyQualifiedNamespaceUnitTest.4.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.api.php', ]; diff --git a/tests/Drupal/Commenting/ClassCommentUnitTest.inc.fixed b/tests/Drupal/Commenting/ClassCommentUnitTest.inc.fixed index 3c04bade1848c8b02268180bc1034eefb9b22c81..805cb8a31870a6e8a521702e19e510d765957be0 100644 --- a/tests/Drupal/Commenting/ClassCommentUnitTest.inc.fixed +++ b/tests/Drupal/Commenting/ClassCommentUnitTest.inc.fixed @@ -5,6 +5,8 @@ * Testing class/trait comments. */ +use Some\Attribute; + /** * */ @@ -60,7 +62,7 @@ class WrongSpacing { /** * This is correct. */ -#[Some\Attribute(foo: 'bar')] +#[Attribute(foo: 'bar')] #[Other\Attribute(baz: 'qux')] class DoubleAttribute { diff --git a/tests/Drupal/Commenting/FunctionCommentUnitTest.inc.fixed b/tests/Drupal/Commenting/FunctionCommentUnitTest.inc.fixed index 817400caf8624b9bf4004b3632cd106ad9b3d78d..4647d9315ab1bb81853c06ed5f918f95db89b84b 100644 --- a/tests/Drupal/Commenting/FunctionCommentUnitTest.inc.fixed +++ b/tests/Drupal/Commenting/FunctionCommentUnitTest.inc.fixed @@ -5,6 +5,8 @@ * Some function comment tests. */ +use Some\Attribute; + /** * Test. * @@ -579,7 +581,7 @@ class Test41 { /** * Method docblock. */ - #[Some\Attribute(foo: 'bar')] + #[Attribute(foo: 'bar')] #[Other\Attribute(baz: 'qux')] public function method() { }