Skip to content

Commit 948f79d

Browse files
committed
Fix ClassLike::$namespacedName must not be accessed before initialization
1 parent 85ee4f9 commit 948f79d

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

Diff for: src/Analyser/NodeScopeResolver.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -6323,7 +6323,7 @@ private function processNodesForCalledMethod($node, string $fileName, MethodRefl
63236323
$declaringClass = $methodReflection->getDeclaringClass();
63246324
if (
63256325
$node instanceof Node\Stmt\Class_
6326-
&& $node->namespacedName !== null
6326+
&& isset($node->namespacedName)
63276327
&& $declaringClass->getName() === (string) $node->namespacedName
63286328
&& $declaringClass->getNativeReflection()->getStartLine() === $node->getStartLine()
63296329
) {

Diff for: src/Dependency/DependencyResolver.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function resolveDependencies(Node $node, Scope $scope): NodeDependencies
4343
$dependenciesReflections = [];
4444

4545
if ($node instanceof Node\Stmt\Class_) {
46-
if ($node->namespacedName !== null) {
46+
if (isset($node->namespacedName)) {
4747
$this->addClassToDependencies($node->namespacedName->toString(), $dependenciesReflections);
4848
}
4949
if ($node->extends !== null) {

Diff for: tests/PHPStan/Analyser/AnalyserIntegrationTest.php

+6
Original file line numberDiff line numberDiff line change
@@ -1505,6 +1505,12 @@ public function testBug12549(): void
15051505
$this->assertNoErrors($errors);
15061506
}
15071507

1508+
public function testBug12627(): void
1509+
{
1510+
$errors = $this->runAnalyse(__DIR__ . '/data/bug-12627.php');
1511+
$this->assertNoErrors($errors);
1512+
}
1513+
15081514
/**
15091515
* @param string[]|null $allAnalysedFiles
15101516
* @return Error[]

Diff for: tests/PHPStan/Analyser/data/bug-12627.php

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Bug12627;
4+
5+
class A
6+
{
7+
public function a(): void
8+
{
9+
$this->b();
10+
}
11+
12+
private function b(): void
13+
{
14+
}
15+
}
16+
17+
$c = new class() {};

0 commit comments

Comments
 (0)