Skip to content

Commit d6153d5

Browse files
committed
Fix trait method visibility
1 parent 16919cb commit d6153d5

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/Reflection/ReflectionClass.php

+5-3
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,8 @@ private function createMethodsFromTrait(ReflectionMethod $method): array
374374
$methodHash = $this->methodHash($method->getImplementingClass()->getName(), $method->getName());
375375

376376
if (array_key_exists($methodHash, $this->traitsData['modifiers'])) {
377+
$newModifierAst = $this->traitsData['modifiers'][$methodHash];
378+
if ($this->traitsData['modifiers'][$methodHash] & ClassNode::VISIBILITY_MODIFIER_MASK) {
377379
$methodModifiersWithoutVisibility = $methodModifiers;
378380
if (($methodModifiers & CoreReflectionMethod::IS_PUBLIC) === CoreReflectionMethod::IS_PUBLIC) {
379381
$methodModifiersWithoutVisibility -= CoreReflectionMethod::IS_PUBLIC;
@@ -384,7 +386,6 @@ private function createMethodsFromTrait(ReflectionMethod $method): array
384386
if (($methodModifiers & CoreReflectionMethod::IS_PRIVATE) === CoreReflectionMethod::IS_PRIVATE) {
385387
$methodModifiersWithoutVisibility -= CoreReflectionMethod::IS_PRIVATE;
386388
}
387-
$newModifierAst = $this->traitsData['modifiers'][$methodHash];
388389
$newModifier = 0;
389390
if (($newModifierAst & ClassNode::MODIFIER_PUBLIC) === ClassNode::MODIFIER_PUBLIC) {
390391
$newModifier = CoreReflectionMethod::IS_PUBLIC;
@@ -395,10 +396,11 @@ private function createMethodsFromTrait(ReflectionMethod $method): array
395396
if (($newModifierAst & ClassNode::MODIFIER_PRIVATE) === ClassNode::MODIFIER_PRIVATE) {
396397
$newModifier = CoreReflectionMethod::IS_PRIVATE;
397398
}
399+
$methodModifiers = $methodModifiersWithoutVisibility | $newModifier;
400+
}
398401
if (($newModifierAst & ClassNode::MODIFIER_FINAL) === ClassNode::MODIFIER_FINAL) {
399-
$newModifier = CoreReflectionMethod::IS_FINAL;
402+
$methodModifiers |= CoreReflectionMethod::IS_FINAL;
400403
}
401-
$methodModifiers = $methodModifiersWithoutVisibility | $newModifier;
402404
}
403405

404406
$createMethod = function (string|null $aliasMethodName) use ($method, $methodModifiers): ReflectionMethod {

0 commit comments

Comments
 (0)