File tree 14 files changed +77
-0
lines changed
14 files changed +77
-0
lines changed Original file line number Diff line number Diff line change @@ -181,6 +181,11 @@ public function isObject(): TrinaryLogic
181
181
return $ this ->objectType ->isObject ();
182
182
}
183
183
184
+ public function isEnum (): TrinaryLogic
185
+ {
186
+ return $ this ->objectType ->isEnum ();
187
+ }
188
+
184
189
public function getTemplateType (string $ ancestorClassName , string $ templateTypeName ): Type
185
190
{
186
191
return $ this ->objectType ->getTemplateType ($ ancestorClassName , $ templateTypeName );
Original file line number Diff line number Diff line change @@ -399,6 +399,11 @@ public function isObject(): TrinaryLogic
399
399
return $ this ->intersectResults (static fn (Type $ type ): TrinaryLogic => $ type ->isObject ());
400
400
}
401
401
402
+ public function isEnum (): TrinaryLogic
403
+ {
404
+ return $ this ->intersectResults (static fn (Type $ type ): TrinaryLogic => $ type ->isEnum ());
405
+ }
406
+
402
407
public function canAccessProperties (): TrinaryLogic
403
408
{
404
409
return $ this ->intersectResults (static fn (Type $ type ): TrinaryLogic => $ type ->canAccessProperties ());
Original file line number Diff line number Diff line change @@ -331,6 +331,16 @@ public function isObject(): TrinaryLogic
331
331
return TrinaryLogic::createMaybe ();
332
332
}
333
333
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
+
334
344
public function canAccessProperties (): TrinaryLogic
335
345
{
336
346
return TrinaryLogic::createYes ();
Original file line number Diff line number Diff line change @@ -121,6 +121,11 @@ public function isObject(): TrinaryLogic
121
121
return TrinaryLogic::createNo ();
122
122
}
123
123
124
+ public function isEnum (): TrinaryLogic
125
+ {
126
+ return TrinaryLogic::createNo ();
127
+ }
128
+
124
129
public function canAccessProperties (): TrinaryLogic
125
130
{
126
131
return TrinaryLogic::createYes ();
Original file line number Diff line number Diff line change @@ -50,6 +50,11 @@ public function isObject(): TrinaryLogic
50
50
return TrinaryLogic::createYes ();
51
51
}
52
52
53
+ public function isEnum (): TrinaryLogic
54
+ {
55
+ return TrinaryLogic::createNo ();
56
+ }
57
+
53
58
public function canAccessProperties (): TrinaryLogic
54
59
{
55
60
return TrinaryLogic::createNo ();
Original file line number Diff line number Diff line change @@ -635,6 +635,16 @@ public function isObject(): TrinaryLogic
635
635
return TrinaryLogic::createYes ();
636
636
}
637
637
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
+
638
648
public function canAccessProperties (): TrinaryLogic
639
649
{
640
650
return TrinaryLogic::createYes ();
Original file line number Diff line number Diff line change @@ -196,6 +196,11 @@ public function isObject(): TrinaryLogic
196
196
return $ this ->getStaticObjectType ()->isObject ();
197
197
}
198
198
199
+ public function isEnum (): TrinaryLogic
200
+ {
201
+ return $ this ->getStaticObjectType ()->isEnum ();
202
+ }
203
+
199
204
public function canAccessProperties (): TrinaryLogic
200
205
{
201
206
return $ this ->getStaticObjectType ()->canAccessProperties ();
Original file line number Diff line number Diff line change @@ -108,6 +108,11 @@ public function isObject(): TrinaryLogic
108
108
return TrinaryLogic::createNo ();
109
109
}
110
110
111
+ public function isEnum (): TrinaryLogic
112
+ {
113
+ return TrinaryLogic::createNo ();
114
+ }
115
+
111
116
public function canAccessProperties (): TrinaryLogic
112
117
{
113
118
return TrinaryLogic::createNo ();
Original file line number Diff line number Diff line change @@ -87,6 +87,11 @@ public function isObject(): TrinaryLogic
87
87
return $ this ->resolve ()->isObject ();
88
88
}
89
89
90
+ public function isEnum (): TrinaryLogic
91
+ {
92
+ return $ this ->resolve ()->isEnum ();
93
+ }
94
+
90
95
public function canAccessProperties (): TrinaryLogic
91
96
{
92
97
return $ this ->resolve ()->canAccessProperties ();
Original file line number Diff line number Diff line change @@ -30,6 +30,11 @@ public function isObject(): TrinaryLogic
30
30
return TrinaryLogic::createMaybe ();
31
31
}
32
32
33
+ public function isEnum (): TrinaryLogic
34
+ {
35
+ return TrinaryLogic::createMaybe ();
36
+ }
37
+
33
38
public function canAccessProperties (): TrinaryLogic
34
39
{
35
40
return TrinaryLogic::createMaybe ();
Original file line number Diff line number Diff line change @@ -21,6 +21,11 @@ public function isObject(): TrinaryLogic
21
21
return TrinaryLogic::createNo ();
22
22
}
23
23
24
+ public function isEnum (): TrinaryLogic
25
+ {
26
+ return TrinaryLogic::createNo ();
27
+ }
28
+
24
29
public function canAccessProperties (): TrinaryLogic
25
30
{
26
31
return TrinaryLogic::createNo ();
Original file line number Diff line number Diff line change @@ -41,6 +41,11 @@ public function isObject(): TrinaryLogic
41
41
return TrinaryLogic::createYes ();
42
42
}
43
43
44
+ public function isEnum (): TrinaryLogic
45
+ {
46
+ return TrinaryLogic::createMaybe ();
47
+ }
48
+
44
49
public function canAccessProperties (): TrinaryLogic
45
50
{
46
51
return TrinaryLogic::createYes ();
Original file line number Diff line number Diff line change @@ -43,6 +43,8 @@ public function getObjectTypeOrClassStringObjectType(): Type;
43
43
44
44
public function isObject (): TrinaryLogic ;
45
45
46
+ public function isEnum (): TrinaryLogic ;
47
+
46
48
/** @return list<ArrayType> */
47
49
public function getArrays (): array ;
48
50
Original file line number Diff line number Diff line change @@ -367,6 +367,11 @@ public function isObject(): TrinaryLogic
367
367
return $ this ->unionResults (static fn (Type $ type ): TrinaryLogic => $ type ->isObject ());
368
368
}
369
369
370
+ public function isEnum (): TrinaryLogic
371
+ {
372
+ return $ this ->unionResults (static fn (Type $ type ): TrinaryLogic => $ type ->isEnum ());
373
+ }
374
+
370
375
public function canAccessProperties (): TrinaryLogic
371
376
{
372
377
return $ this ->unionResults (static fn (Type $ type ): TrinaryLogic => $ type ->canAccessProperties ());
You can’t perform that action at this time.
0 commit comments