From e0fc88f96475b72a3f834a4bb10496356968dc26 Mon Sep 17 00:00:00 2001 From: Klaus Purer Date: Fri, 3 Jan 2025 16:10:33 +0100 Subject: [PATCH 1/2] fix(FullyQualifiedNamespace): Fix fixer for new use statement group --- .../Classes/FullyQualifiedNamespaceSniff.php | 18 ++++++++++++------ .../FullyQualifiedNamespaceUnitTest.2.inc | 9 +++++++++ ...FullyQualifiedNamespaceUnitTest.2.inc.fixed | 11 +++++++++++ .../FullyQualifiedNamespaceUnitTest.php | 3 +++ 4 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.2.inc create mode 100644 tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.2.inc.fixed diff --git a/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php b/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php index b70c4396..01aa74f7 100644 --- a/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php +++ b/coder_sniffer/Drupal/Sniffs/Classes/FullyQualifiedNamespaceSniff.php @@ -187,14 +187,20 @@ public function process(File $phpcsFile, $stackPtr) if ($useStatement !== false && empty($tokens[$useStatement]['conditions']) === true) { $phpcsFile->fixer->addContentBefore($useStatement, "$use\n"); } else { - // Check if there is an @file comment. - $beginning = 0; - $fileComment = $phpcsFile->findNext(T_WHITESPACE, ($beginning + 1), null, true); - if ($tokens[$fileComment]['code'] === T_DOC_COMMENT_OPEN_TAG) { - $beginning = $tokens[$fileComment]['comment_closer']; + // Check if there is a namespace declaration and add it there. + $namespace = $phpcsFile->findNext(T_NAMESPACE, 0); + if ($namespace !== false) { + $beginning = $phpcsFile->findEndOfStatement($namespace); $phpcsFile->fixer->addContent($beginning, "\n\n$use\n"); } else { - $phpcsFile->fixer->addContent($beginning, "$use\n"); + // Check if there is an @file comment. + $fileComment = $phpcsFile->findNext(T_WHITESPACE, 1, null, true); + if ($tokens[$fileComment]['code'] === T_DOC_COMMENT_OPEN_TAG) { + $beginning = $tokens[$fileComment]['comment_closer']; + $phpcsFile->fixer->addContent($beginning, "\n\n$use\n"); + } else { + $phpcsFile->fixer->addContent(0, "\n\n$use\n"); + } } } }//end if diff --git a/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.2.inc b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.2.inc new file mode 100644 index 00000000..a475635e --- /dev/null +++ b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.2.inc @@ -0,0 +1,9 @@ + 1]; + case 'FullyQualifiedNamespaceUnitTest.2.inc': + return [8 => 1]; } return []; @@ -69,6 +71,7 @@ protected function getTestFiles($testFileBase): array return [ __DIR__.'/FullyQualifiedNamespaceUnitTest.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.1.inc', + __DIR__.'/FullyQualifiedNamespaceUnitTest.2.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.api.php', ]; From 475e9d56c13808d4935829085bf8f3f444fbd984 Mon Sep 17 00:00:00 2001 From: Klaus Purer Date: Fri, 3 Jan 2025 16:20:29 +0100 Subject: [PATCH 2/2] add another test case --- .../Classes/FullyQualifiedNamespaceUnitTest.3.inc | 11 +++++++++++ .../FullyQualifiedNamespaceUnitTest.3.inc.fixed | 14 ++++++++++++++ .../Classes/FullyQualifiedNamespaceUnitTest.php | 3 +++ 3 files changed, 28 insertions(+) create mode 100644 tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.3.inc create mode 100644 tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.3.inc.fixed diff --git a/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.3.inc b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.3.inc new file mode 100644 index 00000000..c2c0932f --- /dev/null +++ b/tests/Drupal/Classes/FullyQualifiedNamespaceUnitTest.3.inc @@ -0,0 +1,11 @@ + 1]; case 'FullyQualifiedNamespaceUnitTest.2.inc': return [8 => 1]; + case 'FullyQualifiedNamespaceUnitTest.3.inc': + return [10 => 2]; } return []; @@ -72,6 +74,7 @@ protected function getTestFiles($testFileBase): array __DIR__.'/FullyQualifiedNamespaceUnitTest.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.1.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.2.inc', + __DIR__.'/FullyQualifiedNamespaceUnitTest.3.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.api.php', ];