diff --git a/src/Reflection/Adapter/ReflectionClass.php b/src/Reflection/Adapter/ReflectionClass.php index e4b7b259f..28f4b7f38 100644 --- a/src/Reflection/Adapter/ReflectionClass.php +++ b/src/Reflection/Adapter/ReflectionClass.php @@ -384,14 +384,14 @@ public function getTraits(): array { $traits = $this->betterReflectionClass->getTraits(); - /** @var list $traitNames */ - $traitNames = array_map(static fn (BetterReflectionClass $trait): string => $trait->getName(), $traits); + $traitsByName = []; + foreach ($traits as $trait) { + /** @var trait-string $traitName */ + $traitName = $trait->getName(); + $traitsByName[$traitName] = new self($trait); + } - /** @psalm-suppress ImpureFunctionCall */ - return array_combine( - $traitNames, - array_map(static fn (BetterReflectionClass $trait): self => new self($trait), $traits), - ); + return $traitsByName; } /** diff --git a/src/Reflection/Adapter/ReflectionEnum.php b/src/Reflection/Adapter/ReflectionEnum.php index 796dfaec5..4de8f7f2e 100644 --- a/src/Reflection/Adapter/ReflectionEnum.php +++ b/src/Reflection/Adapter/ReflectionEnum.php @@ -312,14 +312,14 @@ public function getTraits(): array { $traits = $this->betterReflectionEnum->getTraits(); - /** @var list $traitNames */ - $traitNames = array_map(static fn (BetterReflectionClass $trait): string => $trait->getName(), $traits); + $traitsByName = []; + foreach ($traits as $trait) { + /** @var trait-string $traitName */ + $traitName = $trait->getName(); + $traitsByName[$traitName] = new ReflectionClass($trait); + } - /** @psalm-suppress ImpureFunctionCall */ - return array_combine( - $traitNames, - array_map(static fn (BetterReflectionClass $trait): ReflectionClass => new ReflectionClass($trait), $traits), - ); + return $traitsByName; } /** @return list */ diff --git a/src/Reflection/Adapter/ReflectionObject.php b/src/Reflection/Adapter/ReflectionObject.php index 327f99133..5ddf9137a 100644 --- a/src/Reflection/Adapter/ReflectionObject.php +++ b/src/Reflection/Adapter/ReflectionObject.php @@ -316,14 +316,14 @@ public function getTraits(): array { $traits = $this->betterReflectionObject->getTraits(); - /** @var list $traitNames */ - $traitNames = array_map(static fn (BetterReflectionClass $trait): string => $trait->getName(), $traits); + $traitsByName = []; + foreach ($traits as $trait) { + /** @var trait-string $traitName */ + $traitName = $trait->getName(); + $traitsByName[$traitName] = new ReflectionClass($trait); + } - /** @psalm-suppress ImpureFunctionCall */ - return array_combine( - $traitNames, - array_map(static fn (BetterReflectionClass $trait): ReflectionClass => new ReflectionClass($trait), $traits), - ); + return $traitsByName; } /**