Skip to content

Commit 93113cb

Browse files
committed
Type::isEnum()
1 parent 17da800 commit 93113cb

14 files changed

+77
-0
lines changed

Diff for: src/Type/ClosureType.php

+5
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,11 @@ public function isObject(): TrinaryLogic
181181
return $this->objectType->isObject();
182182
}
183183

184+
public function isEnum(): TrinaryLogic
185+
{
186+
return $this->objectType->isEnum();
187+
}
188+
184189
public function getTemplateType(string $ancestorClassName, string $templateTypeName): Type
185190
{
186191
return $this->objectType->getTemplateType($ancestorClassName, $templateTypeName);

Diff for: src/Type/IntersectionType.php

+5
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,11 @@ public function isObject(): TrinaryLogic
399399
return $this->intersectResults(static fn (Type $type): TrinaryLogic => $type->isObject());
400400
}
401401

402+
public function isEnum(): TrinaryLogic
403+
{
404+
return $this->intersectResults(static fn (Type $type): TrinaryLogic => $type->isEnum());
405+
}
406+
402407
public function canAccessProperties(): TrinaryLogic
403408
{
404409
return $this->intersectResults(static fn (Type $type): TrinaryLogic => $type->canAccessProperties());

Diff for: src/Type/MixedType.php

+10
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,16 @@ public function isObject(): TrinaryLogic
331331
return TrinaryLogic::createMaybe();
332332
}
333333

334+
public function isEnum(): TrinaryLogic
335+
{
336+
if ($this->subtractedType !== null) {
337+
if ($this->subtractedType->isSuperTypeOf(new ObjectWithoutClassType())->yes()) {
338+
return TrinaryLogic::createNo();
339+
}
340+
}
341+
return TrinaryLogic::createMaybe();
342+
}
343+
334344
public function canAccessProperties(): TrinaryLogic
335345
{
336346
return TrinaryLogic::createYes();

Diff for: src/Type/NeverType.php

+5
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ public function isObject(): TrinaryLogic
121121
return TrinaryLogic::createNo();
122122
}
123123

124+
public function isEnum(): TrinaryLogic
125+
{
126+
return TrinaryLogic::createNo();
127+
}
128+
124129
public function canAccessProperties(): TrinaryLogic
125130
{
126131
return TrinaryLogic::createYes();

Diff for: src/Type/NonexistentParentClassType.php

+5
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ public function isObject(): TrinaryLogic
5050
return TrinaryLogic::createYes();
5151
}
5252

53+
public function isEnum(): TrinaryLogic
54+
{
55+
return TrinaryLogic::createNo();
56+
}
57+
5358
public function canAccessProperties(): TrinaryLogic
5459
{
5560
return TrinaryLogic::createNo();

Diff for: src/Type/ObjectType.php

+10
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,16 @@ public function isObject(): TrinaryLogic
635635
return TrinaryLogic::createYes();
636636
}
637637

638+
public function isEnum(): TrinaryLogic
639+
{
640+
$classReflection = $this->getClassReflection();
641+
if ($classReflection === null) {
642+
return TrinaryLogic::createMaybe();
643+
}
644+
645+
return TrinaryLogic::createFromBoolean($classReflection->isEnum());
646+
}
647+
638648
public function canAccessProperties(): TrinaryLogic
639649
{
640650
return TrinaryLogic::createYes();

Diff for: src/Type/StaticType.php

+5
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,11 @@ public function isObject(): TrinaryLogic
196196
return $this->getStaticObjectType()->isObject();
197197
}
198198

199+
public function isEnum(): TrinaryLogic
200+
{
201+
return $this->getStaticObjectType()->isEnum();
202+
}
203+
199204
public function canAccessProperties(): TrinaryLogic
200205
{
201206
return $this->getStaticObjectType()->canAccessProperties();

Diff for: src/Type/StrictMixedType.php

+5
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ public function isObject(): TrinaryLogic
108108
return TrinaryLogic::createNo();
109109
}
110110

111+
public function isEnum(): TrinaryLogic
112+
{
113+
return TrinaryLogic::createNo();
114+
}
115+
111116
public function canAccessProperties(): TrinaryLogic
112117
{
113118
return TrinaryLogic::createNo();

Diff for: src/Type/Traits/LateResolvableTypeTrait.php

+5
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ public function isObject(): TrinaryLogic
8787
return $this->resolve()->isObject();
8888
}
8989

90+
public function isEnum(): TrinaryLogic
91+
{
92+
return $this->resolve()->isEnum();
93+
}
94+
9095
public function canAccessProperties(): TrinaryLogic
9196
{
9297
return $this->resolve()->canAccessProperties();

Diff for: src/Type/Traits/MaybeObjectTypeTrait.php

+5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public function isObject(): TrinaryLogic
3030
return TrinaryLogic::createMaybe();
3131
}
3232

33+
public function isEnum(): TrinaryLogic
34+
{
35+
return TrinaryLogic::createMaybe();
36+
}
37+
3338
public function canAccessProperties(): TrinaryLogic
3439
{
3540
return TrinaryLogic::createMaybe();

Diff for: src/Type/Traits/NonObjectTypeTrait.php

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ public function isObject(): TrinaryLogic
2121
return TrinaryLogic::createNo();
2222
}
2323

24+
public function isEnum(): TrinaryLogic
25+
{
26+
return TrinaryLogic::createNo();
27+
}
28+
2429
public function canAccessProperties(): TrinaryLogic
2530
{
2631
return TrinaryLogic::createNo();

Diff for: src/Type/Traits/ObjectTypeTrait.php

+5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ public function isObject(): TrinaryLogic
4141
return TrinaryLogic::createYes();
4242
}
4343

44+
public function isEnum(): TrinaryLogic
45+
{
46+
return TrinaryLogic::createMaybe();
47+
}
48+
4449
public function canAccessProperties(): TrinaryLogic
4550
{
4651
return TrinaryLogic::createYes();

Diff for: src/Type/Type.php

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public function getObjectTypeOrClassStringObjectType(): Type;
4343

4444
public function isObject(): TrinaryLogic;
4545

46+
public function isEnum(): TrinaryLogic;
47+
4648
/** @return list<ArrayType> */
4749
public function getArrays(): array;
4850

Diff for: src/Type/UnionType.php

+5
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,11 @@ public function isObject(): TrinaryLogic
367367
return $this->unionResults(static fn (Type $type): TrinaryLogic => $type->isObject());
368368
}
369369

370+
public function isEnum(): TrinaryLogic
371+
{
372+
return $this->unionResults(static fn (Type $type): TrinaryLogic => $type->isEnum());
373+
}
374+
370375
public function canAccessProperties(): TrinaryLogic
371376
{
372377
return $this->unionResults(static fn (Type $type): TrinaryLogic => $type->canAccessProperties());

0 commit comments

Comments
 (0)