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]; + case 'FullyQualifiedNamespaceUnitTest.3.inc': + return [10 => 2]; } return []; @@ -69,6 +73,8 @@ protected function getTestFiles($testFileBase): array return [ __DIR__.'/FullyQualifiedNamespaceUnitTest.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.1.inc', + __DIR__.'/FullyQualifiedNamespaceUnitTest.2.inc', + __DIR__.'/FullyQualifiedNamespaceUnitTest.3.inc', __DIR__.'/FullyQualifiedNamespaceUnitTest.api.php', ];