From eff8102fc70e839c722f283bc8d73106a7ced170 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sun, 3 Jul 2022 22:51:40 +0200 Subject: [PATCH] fix: `Equals` operation, fix typing information. --- src/Contract/Collection.php | 1 - src/Contract/Operation/Equalsable.php | 8 +------- src/Operation/Equals.php | 15 ++++++--------- tests/static-analysis/equals.php | 2 +- 4 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/Contract/Collection.php b/src/Contract/Collection.php index 9c3482cf4..3ea494022 100644 --- a/src/Contract/Collection.php +++ b/src/Contract/Collection.php @@ -166,7 +166,6 @@ * @template-extends DropWhileable * @template-extends Dumpable * @template-extends Duplicateable - * @template-extends Equalsable * @template-extends Everyable * @template-extends Explodeable * @template-extends Falsyable diff --git a/src/Contract/Operation/Equalsable.php b/src/Contract/Operation/Equalsable.php index b0002ecc5..c90d51b8e 100644 --- a/src/Contract/Operation/Equalsable.php +++ b/src/Contract/Operation/Equalsable.php @@ -9,12 +9,6 @@ namespace loophp\collection\Contract\Operation; -use loophp\collection\Contract\Collection; - -/** - * @template TKey - * @template T - */ interface Equalsable { /** @@ -27,7 +21,7 @@ interface Equalsable * * @see https://loophp-collection.readthedocs.io/en/stable/pages/api.html#equals * - * @param iterable $other + * @param iterable $other */ public function equals(iterable $other): bool; } diff --git a/src/Operation/Equals.php b/src/Operation/Equals.php index 5fbb3a7b1..59ad6192b 100644 --- a/src/Operation/Equals.php +++ b/src/Operation/Equals.php @@ -16,29 +16,26 @@ /** * @immutable * - * @template TKey - * @template T - * * phpcs:disable Generic.Files.LineLength.TooLong */ final class Equals extends AbstractOperation { /** - * @return Closure(iterable): Closure(iterable): Generator + * @return Closure(iterable): Closure(iterable): Generator */ public function __invoke(): Closure { return /** - * @param iterable $other + * @param iterable $other * - * @return Closure(iterable): Generator + * @return Closure(iterable): Generator */ static function (iterable $other): Closure { /** - * @param iterable $iterable + * @param iterable $iterable * - * @return Generator + * @return Generator */ return static function (iterable $iterable) use ($other): Generator { $otherAggregate = new IterableIteratorAggregate($other); @@ -58,7 +55,7 @@ static function (iterable $other): Closure { $containsCallback = /** - * @param T $current + * @param mixed $current */ static fn (int $index, $current): bool => (new Contains())()($current)($otherAggregate)->current(); diff --git a/tests/static-analysis/equals.php b/tests/static-analysis/equals.php index 14e4a0abf..5447a9d83 100644 --- a/tests/static-analysis/equals.php +++ b/tests/static-analysis/equals.php @@ -33,7 +33,7 @@ function equals_check(bool $value): void /** @psalm-suppress InvalidArgument -> Psalm narrows the types to 1|2|3 and 4|5 and knows these cannot work */ equals_check(Collection::fromIterable([1, 2, 3])->equals(Collection::fromIterable([4, 5]))); -/** @psalm-suppress InvalidArgument @phpstan-ignore-next-line */ +/** @psalm-suppress InvalidArgument */ equals_check(Collection::fromIterable([1, 2, 3])->equals(Collection::fromIterable(['a', 'b']))); /** @psalm-suppress InvalidArgument -> Psalm sees the keys and values are completely different */ equals_check(Collection::fromIterable(['foo' => 'f', 'bar' => 'b'])->equals(Collection::fromIterable(['other' => 'x'])));