Skip to content

Commit

Permalink
Fix detection of shadowed trait methods
Browse files Browse the repository at this point in the history
  • Loading branch information
ondrejmirtes committed Jan 6, 2024
1 parent 2e08c9f commit 2270051
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
14 changes: 13 additions & 1 deletion src/Analyser/NodeScopeResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -4473,8 +4473,20 @@ private function processTraitUse(Node\Stmt\TraitUse $node, MutatingScope $classS
if (!isset($this->analysedFiles[$fileName])) {
continue;
}
$adaptations = [];
foreach ($node->adaptations as $adaptation) {
if ($adaptation->trait === null) {
$adaptations[] = $adaptation;
continue;
}
if ($adaptation->trait->toLowerString() !== $trait->toLowerString()) {
continue;
}

$adaptations[] = $adaptation;
}
$parserNodes = $this->parser->parseFile($fileName);
$this->processNodesForTraitUse($parserNodes, $traitReflection, $classScope, $node->adaptations, $nodeCallback);
$this->processNodesForTraitUse($parserNodes, $traitReflection, $classScope, $adaptations, $nodeCallback);
}
}

Expand Down
14 changes: 14 additions & 0 deletions tests/PHPStan/Rules/Debug/DumpTypeRuleTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,18 @@ public function testBug7803(): void
]);
}

public function testBug10377(): void
{
$this->analyse([__DIR__ . '/data/bug-10377.php'], [
[
'Dumped type: array<string, mixed>',
22,
],
[
'Dumped type: array<string, mixed>',
34,
],
]);
}

}
37 changes: 37 additions & 0 deletions tests/PHPStan/Rules/Debug/data/bug-10377.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace Bug10377;

final class WebRequest
{

use Headers, RequestParameters {
Headers::addAdditionalProperties as addAdditionalPropertiesHeaders;
RequestParameters::addAdditionalProperties insteadof Headers;
}

}

trait Headers
{
/**
* @param array<string, mixed> $additionalProperties
*/
public function addAdditionalProperties(array $additionalProperties): void
{
\PHPStan\dumpType($additionalProperties);
}
}

trait RequestParameters
{

/**
* @param array<string, mixed> $additionalProperties
*/
public function addAdditionalProperties(array $additionalProperties): void
{
\PHPStan\dumpType($additionalProperties);
}

}

0 comments on commit 2270051

Please sign in to comment.