Skip to content

Commit 52f3c79

Browse files
committed
ReferenceUsedNamesOnlySniff: fixed "allowFullyQualifiedNameForCollidingFunctions" and "allowFullyQualifiedNameForCollidingConstants"
1 parent 5309879 commit 52f3c79

File tree

3 files changed

+50
-13
lines changed

3 files changed

+50
-13
lines changed

SlevomatCodingStandard/Sniffs/Namespaces/ReferenceUsedNamesOnlySniff.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -218,19 +218,21 @@ function (ReferencedName $referencedName): string {
218218
$isGlobalFunctionFallback = $referencedName->isFunction() && $isGlobalFallback;
219219
$isGlobalConstantFallback = $referencedName->isConstant() && $isGlobalFallback;
220220

221-
if ($referencedName->isClass() && $this->allowFullyQualifiedNameForCollidingClasses) {
222-
$lowerCasedUnqualifiedClassName = strtolower($unqualifiedName);
223-
if (isset($classReferencesIndex[$lowerCasedUnqualifiedClassName]) || array_key_exists($lowerCasedUnqualifiedClassName, $definedClassesIndex)) {
224-
continue;
225-
}
226-
} elseif ($referencedName->isFunction() && $this->allowFullyQualifiedNameForCollidingFunctions) {
227-
$lowerCasedUnqualifiedFunctionName = strtolower($unqualifiedName);
228-
if (isset($functionReferencesIndex[$lowerCasedUnqualifiedFunctionName]) || array_key_exists($lowerCasedUnqualifiedFunctionName, $definedFunctionsIndex)) {
229-
continue;
230-
}
231-
} elseif ($referencedName->isConstant() && $this->allowFullyQualifiedNameForCollidingConstants) {
232-
if (isset($constantReferencesIndex[$unqualifiedName]) || array_key_exists($unqualifiedName, $definedConstantsIndex)) {
233-
continue;
221+
if ($isFullyQualified) {
222+
if ($referencedName->isClass() && $this->allowFullyQualifiedNameForCollidingClasses) {
223+
$lowerCasedUnqualifiedClassName = strtolower($unqualifiedName);
224+
if (isset($classReferencesIndex[$lowerCasedUnqualifiedClassName]) || array_key_exists($lowerCasedUnqualifiedClassName, $definedClassesIndex)) {
225+
continue;
226+
}
227+
} elseif ($referencedName->isFunction() && $this->allowFullyQualifiedNameForCollidingFunctions) {
228+
$lowerCasedUnqualifiedFunctionName = strtolower($unqualifiedName);
229+
if (isset($functionReferencesIndex[$lowerCasedUnqualifiedFunctionName]) || array_key_exists($lowerCasedUnqualifiedFunctionName, $definedFunctionsIndex)) {
230+
continue;
231+
}
232+
} elseif ($referencedName->isConstant() && $this->allowFullyQualifiedNameForCollidingConstants) {
233+
if (isset($constantReferencesIndex[$unqualifiedName]) || array_key_exists($unqualifiedName, $definedConstantsIndex)) {
234+
continue;
235+
}
234236
}
235237
}
236238

tests/Sniffs/Namespaces/ReferenceUsedNamesOnlySniffTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,4 +775,19 @@ public function testCollidingFullyQualifiedConstantNameDisallowed(): void
775775
$this->assertSniffError($report, 12, ReferenceUsedNamesOnlySniff::CODE_REFERENCE_VIA_FULLY_QUALIFIED_NAME);
776776
}
777777

778+
public function testReferencingGlobalFunctionViaFallbackErrorsWithMoreComplexSettings(): void
779+
{
780+
$report = $this->checkFile(
781+
__DIR__ . '/data/referencingGlobalFunctionViaFallbackErrorsWithMoreComplexSettings.php',
782+
[
783+
'allowFallbackGlobalFunctions' => false,
784+
'allowFullyQualifiedNameForCollidingFunctions' => true,
785+
'allowFullyQualifiedGlobalFunctions' => true,
786+
]
787+
);
788+
789+
$this->assertSame(1, $report->getErrorCount());
790+
$this->assertSniffError($report, 17, ReferenceUsedNamesOnlySniff::CODE_REFERENCE_VIA_FALLBACK_GLOBAL_NAME);
791+
}
792+
778793
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace FooNamespace;
4+
5+
function php_version()
6+
{
7+
return '6.0.0';
8+
}
9+
10+
class Foo
11+
{
12+
13+
public function boo()
14+
{
15+
\php_version();
16+
\max(1, 3);
17+
min(1, 3);
18+
}
19+
20+
}

0 commit comments

Comments
 (0)