Skip to content

Commit 5eccb7d

Browse files
authored
fix(VariableComment): Support PHP attributes on class properties (#3408524)
1 parent 40d9024 commit 5eccb7d

File tree

2 files changed

+41
-18
lines changed

2 files changed

+41
-18
lines changed

coder_sniffer/Drupal/Sniffs/Commenting/VariableCommentSniff.php

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,43 @@ public function processMemberVar(File $phpcsFile, $stackPtr)
3939
{
4040
$tokens = $phpcsFile->getTokens();
4141
$ignore = [
42-
T_PUBLIC,
43-
T_PRIVATE,
44-
T_PROTECTED,
45-
T_VAR,
46-
T_STATIC,
47-
T_WHITESPACE,
48-
T_STRING,
49-
T_NS_SEPARATOR,
50-
T_NULLABLE,
51-
T_READONLY,
52-
T_TYPE_UNION,
53-
T_TYPE_INTERSECTION,
54-
T_FALSE,
55-
T_NULL,
42+
T_PUBLIC => T_PUBLIC,
43+
T_PRIVATE => T_PRIVATE,
44+
T_PROTECTED => T_PROTECTED,
45+
T_VAR => T_VAR,
46+
T_STATIC => T_STATIC,
47+
T_READONLY => T_READONLY,
48+
T_WHITESPACE => T_WHITESPACE,
49+
T_STRING => T_STRING,
50+
T_NS_SEPARATOR => T_NS_SEPARATOR,
51+
T_NAMESPACE => T_NAMESPACE,
52+
T_NULLABLE => T_NULLABLE,
53+
T_TYPE_UNION => T_TYPE_UNION,
54+
T_TYPE_INTERSECTION => T_TYPE_INTERSECTION,
55+
T_NULL => T_NULL,
56+
T_TRUE => T_TRUE,
57+
T_FALSE => T_FALSE,
58+
T_SELF => T_SELF,
59+
T_PARENT => T_PARENT,
5660
];
5761

58-
$commentEnd = $phpcsFile->findPrevious($ignore, ($stackPtr - 1), null, true);
59-
if ($commentEnd === false
60-
|| ($tokens[$commentEnd]['code'] !== T_DOC_COMMENT_CLOSE_TAG
61-
&& $tokens[$commentEnd]['code'] !== T_COMMENT)
62+
for ($commentEnd = ($stackPtr - 1); $commentEnd >= 0; $commentEnd--) {
63+
if (isset($ignore[$tokens[$commentEnd]['code']]) === true) {
64+
continue;
65+
}
66+
67+
if ($tokens[$commentEnd]['code'] === T_ATTRIBUTE_END
68+
&& isset($tokens[$commentEnd]['attribute_opener']) === true
69+
) {
70+
$commentEnd = $tokens[$commentEnd]['attribute_opener'];
71+
continue;
72+
}
73+
74+
break;
75+
}
76+
77+
if ($tokens[$commentEnd]['code'] !== T_DOC_COMMENT_CLOSE_TAG
78+
&& $tokens[$commentEnd]['code'] !== T_COMMENT
6279
) {
6380
$phpcsFile->addError('Missing member variable doc comment', $stackPtr, 'Missing');
6481
return;

tests/Drupal/good/good.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1811,6 +1811,12 @@ public function test3();
18111811
*/
18121812
class TestPhpAttributes {
18131813

1814+
/**
1815+
* Bar property.
1816+
*/
1817+
#[NotBlank]
1818+
private bool $bar;
1819+
18141820
/**
18151821
* Tests method with PHP attribute and docblock.
18161822
*/

0 commit comments

Comments
 (0)