From 4a14ce0c626423054c2b45760ceee248d87475ae Mon Sep 17 00:00:00 2001 From: George Steel Date: Tue, 10 Jan 2023 22:09:08 +0000 Subject: [PATCH] fix: Amends psalm assertion syntax on `Uuid::isValid()` to prevent incorrect type inference (#486) * fix: Amends psalm assertion syntax on `Uuid::isValid()` to prevent incorrect type inference * Add static analysis test case for invalid input --- src/Uuid.php | 2 +- tests/static-analysis/ValidUuidIsNonEmpty.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Uuid.php b/src/Uuid.php index 7cbfb17..6fb1e5b 100644 --- a/src/Uuid.php +++ b/src/Uuid.php @@ -569,7 +569,7 @@ class Uuid implements UuidInterface * @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 * - * @psalm-assert-if-true non-empty-string $uuid + * @psalm-assert-if-true =non-empty-string $uuid */ public static function isValid(string $uuid): bool { diff --git a/tests/static-analysis/ValidUuidIsNonEmpty.php b/tests/static-analysis/ValidUuidIsNonEmpty.php index e1490fb..8c7d6b6 100644 --- a/tests/static-analysis/ValidUuidIsNonEmpty.php +++ b/tests/static-analysis/ValidUuidIsNonEmpty.php @@ -32,4 +32,13 @@ final class ValidUuidIsNonEmpty throw new InvalidArgumentException('Not a UUID'); } + + public function givenInvalidInputValueRemainsAString(string $input): string + { + if (Uuid::isValid($input)) { + return 'It Worked!'; + } + + return $input; + } }