Skip to content

Commit fa1906f

Browse files
authored
Merge pull request #1527 from VincentLanglet/useHasValueExpression
Stop returning ReflectionEnumBackedCase without value
2 parents e6161c5 + 50a2fdc commit fa1906f

File tree

3 files changed

+14
-15
lines changed

3 files changed

+14
-15
lines changed

src/Reflection/Adapter/ReflectionEnum.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ public function getCase(string $name): ReflectionEnumUnitCase|ReflectionEnumBack
583583
throw new CoreReflectionException(sprintf('Case %s::%s does not exist', $this->betterReflectionEnum->getName(), $name));
584584
}
585585

586-
if ($this->betterReflectionEnum->isBacked()) {
586+
if ($case->hasValueExpression()) {
587587
return new ReflectionEnumBackedCase($case);
588588
}
589589

@@ -593,9 +593,8 @@ public function getCase(string $name): ReflectionEnumUnitCase|ReflectionEnumBack
593593
/** @return list<ReflectionEnumUnitCase|ReflectionEnumBackedCase> */
594594
public function getCases(): array
595595
{
596-
/** @psalm-suppress ImpureFunctionCall */
597-
return array_map(function (BetterReflectionEnumCase $case): ReflectionEnumUnitCase|ReflectionEnumBackedCase {
598-
if ($this->betterReflectionEnum->isBacked()) {
596+
return array_map(static function (BetterReflectionEnumCase $case): ReflectionEnumUnitCase|ReflectionEnumBackedCase {
597+
if ($case->hasValueExpression()) {
599598
return new ReflectionEnumBackedCase($case);
600599
}
601600

src/Reflection/StringCast/ReflectionEnumCaseStringCast.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ public static function toString(ReflectionEnumCase $enumCaseReflection, bool $in
2121
{
2222
$enumReflection = $enumCaseReflection->getDeclaringEnum();
2323

24-
$value = $enumReflection->isBacked() ? $enumCaseReflection->getValue() : 'Object';
25-
$type = $enumReflection->isBacked() ? gettype($value) : $enumReflection->getName();
24+
$value = $enumCaseReflection->hasValueExpression() ? $enumCaseReflection->getValue() : 'Object';
25+
$type = $enumCaseReflection->hasValueExpression() ? gettype($value) : $enumReflection->getName();
2626

2727
return sprintf(
2828
"%sConstant [ public %s %s ] { %s }\n",

test/unit/Reflection/Adapter/ReflectionEnumTest.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -732,11 +732,11 @@ public function testGetCaseForPureEnum(): void
732732
public function testGetCaseForBackedEnum(): void
733733
{
734734
$betterReflectionEnumCase = $this->createMock(BetterReflectionEnumCase::class);
735+
$betterReflectionEnumCase
736+
->method('hasValueExpression')
737+
->willReturn(true);
735738

736739
$betterReflectionEnum = $this->createMock(BetterReflectionEnum::class);
737-
$betterReflectionEnum
738-
->method('isBacked')
739-
->willReturn(true);
740740
$betterReflectionEnum
741741
->method('getCase')
742742
->willReturn($betterReflectionEnumCase);
@@ -749,11 +749,11 @@ public function testGetCaseForBackedEnum(): void
749749
public function testGetCasesForPureEnum(): void
750750
{
751751
$betterReflectionEnumCase = $this->createMock(BetterReflectionEnumCase::class);
752+
$betterReflectionEnumCase
753+
->method('hasValueExpression')
754+
->willReturn(false);
752755

753756
$betterReflectionEnum = $this->createMock(BetterReflectionEnum::class);
754-
$betterReflectionEnum
755-
->method('isBacked')
756-
->willReturn(false);
757757
$betterReflectionEnum
758758
->method('getCases')
759759
->willReturn([$betterReflectionEnumCase]);
@@ -766,11 +766,11 @@ public function testGetCasesForPureEnum(): void
766766
public function testGetCasesForBackedEnum(): void
767767
{
768768
$betterReflectionEnumCase = $this->createMock(BetterReflectionEnumCase::class);
769+
$betterReflectionEnumCase
770+
->method('hasValueExpression')
771+
->willReturn(true);
769772

770773
$betterReflectionEnum = $this->createMock(BetterReflectionEnum::class);
771-
$betterReflectionEnum
772-
->method('isBacked')
773-
->willReturn(true);
774774
$betterReflectionEnum
775775
->method('getCases')
776776
->willReturn([$betterReflectionEnumCase]);

0 commit comments

Comments
 (0)