From c8e8b7b69383da1da2055d4b537a4dcb55288ccd Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Mon, 23 Mar 2020 10:01:43 +0100 Subject: [PATCH] Marking `Uuid::uuid3()` as pure as well: it produces same values for same input --- src/Uuid.php | 3 +++ tests/static-analysis/UuidIsImmutable.php | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/Uuid.php b/src/Uuid.php index 3f7e394..3260e68 100644 --- a/src/Uuid.php +++ b/src/Uuid.php @@ -512,6 +512,9 @@ class Uuid implements UuidInterface * * @return UuidInterface A UuidInterface instance that represents a * version 3 UUID + * + * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, + * but under constant factory setups, this method operates in functionally pure manners */ public static function uuid3($ns, string $name): UuidInterface { diff --git a/tests/static-analysis/UuidIsImmutable.php b/tests/static-analysis/UuidIsImmutable.php index 4c827fd..6c17348 100644 --- a/tests/static-analysis/UuidIsImmutable.php +++ b/tests/static-analysis/UuidIsImmutable.php @@ -90,6 +90,15 @@ final class UuidIsImmutable ]; } + /** @psalm-pure */ + public static function uuid3IsPure(): UuidInterface + { + return Uuid::uuid3( + Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'), + 'Look ma! I am a pure function!' + ); + } + /** @psalm-pure */ public static function uuid5IsPure(): UuidInterface {