1414 * @copyright 2019 Marc Bennewitz
1515 * @license http://github.com/marc-mabe/php-enum/blob/master/LICENSE.txt New BSD License
1616 * @link http://github.com/marc-mabe/php-enum for the canonical source repository
17+ *
18+ * @psalm-immutable
1719 */
1820abstract class Enum
1921{
@@ -87,6 +89,8 @@ final private function __clone()
8789 /**
8890 * @throws LogicException Enums are not serializable
8991 * because instances are implemented as singletons
92+ *
93+ * @psalm-return never-return
9094 */
9195 final public function __sleep ()
9296 {
@@ -96,6 +100,8 @@ final public function __sleep()
96100 /**
97101 * @throws LogicException Enums are not serializable
98102 * because instances are implemented as singletons
103+ *
104+ * @psalm-return never-return
99105 */
100106 final public function __wakeup ()
101107 {
@@ -116,6 +122,8 @@ final public function getValue()
116122 * Get the name of the enumerator
117123 *
118124 * @return string
125+ *
126+ * @psalm-return non-empty-string
119127 */
120128 final public function getName ()
121129 {
@@ -170,6 +178,8 @@ final public function is($enumerator)
170178 * @return static
171179 * @throws InvalidArgumentException On an unknown or invalid value
172180 * @throws LogicException On ambiguous constant values
181+ *
182+ * @psalm-pure
173183 */
174184 final public static function get ($ enumerator )
175185 {
@@ -187,6 +197,8 @@ final public static function get($enumerator)
187197 * @return static
188198 * @throws InvalidArgumentException On an unknown or invalid value
189199 * @throws LogicException On ambiguous constant values
200+ *
201+ * @psalm-pure
190202 */
191203 final public static function byValue ($ value )
192204 {
@@ -214,6 +226,8 @@ final public static function byValue($value)
214226 * @return static
215227 * @throws InvalidArgumentException On an invalid or unknown name
216228 * @throws LogicException On ambiguous values
229+ *
230+ * @psalm-pure
217231 */
218232 final public static function byName (string $ name )
219233 {
@@ -241,6 +255,8 @@ final public static function byName(string $name)
241255 * @return static
242256 * @throws InvalidArgumentException On an invalid ordinal number
243257 * @throws LogicException On ambiguous values
258+ *
259+ * @psalm-pure
244260 */
245261 final public static function byOrdinal (int $ ordinal )
246262 {
@@ -263,6 +279,9 @@ final public static function byOrdinal(int $ordinal)
263279 * Get a list of enumerator instances ordered by ordinal number
264280 *
265281 * @return static[]
282+ *
283+ * @psalm-return list<static>
284+ * @psalm-pure
266285 */
267286 final public static function getEnumerators ()
268287 {
@@ -276,6 +295,9 @@ final public static function getEnumerators()
276295 * Get a list of enumerator values ordered by ordinal number
277296 *
278297 * @return mixed[]
298+ *
299+ * @psalm-return list<null|bool|int|float|string|array>
300+ * @psalm-pure
279301 */
280302 final public static function getValues ()
281303 {
@@ -286,6 +308,9 @@ final public static function getValues()
286308 * Get a list of enumerator names ordered by ordinal number
287309 *
288310 * @return string[]
311+ *
312+ * @psalm-return list<non-empty-string>
313+ * @psalm-pure
289314 */
290315 final public static function getNames ()
291316 {
@@ -294,11 +319,14 @@ final public static function getNames()
294319 }
295320 return self ::$ names [static ::class];
296321 }
297-
322+
298323 /**
299324 * Get a list of enumerator ordinal numbers
300325 *
301326 * @return int[]
327+ *
328+ * @psalm-return list<int>
329+ * @psalm-pure
302330 */
303331 final public static function getOrdinals ()
304332 {
@@ -309,8 +337,11 @@ final public static function getOrdinals()
309337 /**
310338 * Get all available constants of the called class
311339 *
312- * @return array
340+ * @return mixed[]
313341 * @throws LogicException On ambiguous constant values
342+ *
343+ * @psalm-return array<non-empty-string, null|bool|int|float|string|array>
344+ * @psalm-pure
314345 */
315346 final public static function getConstants ()
316347 {
@@ -361,9 +392,11 @@ private static function noAmbiguousValues($constants)
361392
362393 /**
363394 * Test if the given enumerator is part of this enumeration
364- *
395+ *
365396 * @param static|null|bool|int|float|string|array $enumerator
366397 * @return bool
398+ *
399+ * @psalm-pure
367400 */
368401 final public static function has ($ enumerator )
369402 {
@@ -376,6 +409,8 @@ final public static function has($enumerator)
376409 *
377410 * @param null|bool|int|float|string|array $value
378411 * @return bool
412+ *
413+ * @psalm-pure
379414 */
380415 final public static function hasValue ($ value )
381416 {
@@ -387,6 +422,8 @@ final public static function hasValue($value)
387422 *
388423 * @param string $name
389424 * @return bool
425+ *
426+ * @psalm-pure
390427 */
391428 final public static function hasName (string $ name )
392429 {
@@ -404,6 +441,8 @@ final public static function hasName(string $name)
404441 * @return static
405442 * @throws InvalidArgumentException On an invalid or unknown name
406443 * @throws LogicException On ambiguous constant values
444+ *
445+ * @psalm-pure
407446 */
408447 final public static function __callStatic (string $ method , array $ args )
409448 {
0 commit comments