Skip to content

Commit c5a99df

Browse files
Rework
1 parent 846d7bd commit c5a99df

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

src/PhpDoc/ResolvedPhpDocBlock.php

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,7 @@ public static function createEmpty(): self
252252
*/
253253
public function merge(array $parents, array $parentPhpDocBlocks): self
254254
{
255-
$className = $this->nameScope !== null ? $this->nameScope->getClassName() : null;
256-
$classReflection = $className !== null && $this->reflectionProvider->hasClass($className)
257-
? $this->reflectionProvider->getClass($className)
258-
: null;
255+
$classReflection = $this->getClassReflection();
259256

260257
// new property also needs to be added to createEmpty()
261258
$result = new self();
@@ -461,6 +458,20 @@ public function getNullableNameScope(): ?NameScope
461458
return $this->nameScope;
462459
}
463460

461+
private function getClassReflection(): ?ClassReflection
462+
{
463+
if ($this->nameScope === null) {
464+
return null;
465+
}
466+
467+
$className = $this->nameScope->getClassName();
468+
if (!$this->reflectionProvider->hasClass($className)) {
469+
return null;
470+
}
471+
472+
return $this->reflectionProvider->getClass($className);
473+
}
474+
464475
/**
465476
* @return array<(string|int), VarTag>
466477
*/
@@ -827,6 +838,14 @@ public function isPure(): ?bool
827838
return $this->isPure;
828839
}
829840

841+
if ($this->nameScope !== null) {
842+
$classReflection = $this->getClassReflection();
843+
if ($classReflection !== null) {
844+
$this->isPure = $classReflection->getDefaultMethodPurity();
845+
return $this->isPure;
846+
}
847+
}
848+
830849
$this->isPure = null;
831850
}
832851

src/Reflection/Php/PhpClassReflectionExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -892,7 +892,7 @@ public function createUserlandMethodReflection(ClassReflection $fileDeclaringCla
892892
}
893893
}
894894

895-
$isPure ??= $resolvedPhpDoc->isPure() ?? $phpDocBlockClassReflection->getDefaultMethodPurity();
895+
$isPure ??= $resolvedPhpDoc->isPure();
896896
$asserts = Assertions::createFromResolvedPhpDocBlock($resolvedPhpDoc);
897897
$acceptsNamedArguments = $resolvedPhpDoc->acceptsNamedArguments();
898898
$selfOutType = $resolvedPhpDoc->getSelfOutTag() !== null ? $resolvedPhpDoc->getSelfOutTag()->getType() : null;

0 commit comments

Comments
 (0)