From fa938d743b843af72ba0e0159b2866c14d3db954 Mon Sep 17 00:00:00 2001 From: Lctrs Date: Wed, 24 Mar 2021 10:29:08 +0000 Subject: [PATCH] fix psalm errors (#11) * fix phpdoc type of $pass You have to specify the type of the value * Specify psalm type of Option::fromKey()'s $key argument * none: return new instances instead of returning $this phpdoc say it should return a Option, but $this is of type Option, so psalm detect this as a type mismatch --- psalm-baseline.xml | 15 --------------- spec/Option/NoneSpec.php | 2 +- src/Option.php | 1 + src/Option/None.php | 9 +++++---- src/Option/Some.php | 3 ++- 5 files changed, 9 insertions(+), 21 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index dd5d89c..c8385a3 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,21 +1,6 @@ - - - $key - - - - $this - $this - $this - - - Option<U> - Option<U> - Option<U> - $this->pass $this->pass diff --git a/spec/Option/NoneSpec.php b/spec/Option/NoneSpec.php index 447cde0..787604a 100644 --- a/spec/Option/NoneSpec.php +++ b/spec/Option/NoneSpec.php @@ -51,7 +51,7 @@ function it_unwrapOrElses() function it_doesnt_map() { - $this->map(function() {})->shouldBe($this); + $this->map(function() {})->shouldHaveType(None::class); } function it_mapOrs() diff --git a/src/Option.php b/src/Option.php index 2b0a662..4de3865 100644 --- a/src/Option.php +++ b/src/Option.php @@ -223,6 +223,7 @@ public static function fromNullable($thing): Option * * @param array $coll C * @param mixed $key + * @psalm-param array-key $key * @return Option Option */ public static function fromKey(array $coll, $key): Option diff --git a/src/Option/None.php b/src/Option/None.php index 22e338f..2e0981d 100644 --- a/src/Option/None.php +++ b/src/Option/None.php @@ -28,13 +28,14 @@ class None extends Option { /** * @var array + * @psalm-var list */ private $pass; /** * None constructor * - * @param array ...$pass + * @param mixed ...$pass */ public function __construct(...$pass) { $this->pass = $pass; @@ -123,7 +124,7 @@ public function unwrapOrElse(Closure $op) */ public function map(Closure $mapper): Option { - return $this; + return new self(...$this->pass); } /** @@ -184,7 +185,7 @@ public function iter(): array */ public function and(Option $optb): Option { - return $this; + return new self(...$this->pass); } /** @@ -200,7 +201,7 @@ public function and(Option $optb): Option */ public function andThen(Closure $op): Option { - return $this; + return new self(...$this->pass); } /** diff --git a/src/Option/Some.php b/src/Option/Some.php index 6ba0800..dc39f1e 100644 --- a/src/Option/Some.php +++ b/src/Option/Some.php @@ -34,6 +34,7 @@ class Some extends Option /** * @var array + * @psalm-var list */ private $pass; @@ -42,7 +43,7 @@ class Some extends Option * * @param mixed $value * @psalm-param T $value - * @param array ...$pass + * @param mixed ...$pass */ public function __construct($value, ...$pass) {