diff --git a/VERSION b/VERSION index 7aa8daf..6189dc2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2504.11235 +0.2504.21040 diff --git a/src/Dependencies.php b/src/Dependencies.php index 88cdf5c..efc7719 100644 --- a/src/Dependencies.php +++ b/src/Dependencies.php @@ -1,7 +1,7 @@ <?php // Dependencies.php // Created: 2025-01-18 -// Updated: 2025-03-22 +// Updated: 2025-04-02 namespace Index; @@ -213,7 +213,7 @@ class Dependencies { if(!array_key_exists($class, $this->objects)) return null; - $object = XArray::first($this->objects[$class], $predicate); // @phpstan-ignore-line: IDC + $object = XArray::first($this->objects[$class], $predicate); // @phpstan-ignore argument.type if($object === null || !is_a($object, $class)) return null; @@ -254,8 +254,8 @@ class Dependencies { return []; if($predicate === null) - return $this->objects[$class]; // @phpstan-ignore-line: trust me + return $this->objects[$class]; // @phpstan-ignore return.type - return XArray::where($this->objects[$class], $predicate); // @phpstan-ignore-line: this is fine + return XArray::where($this->objects[$class], $predicate); // @phpstan-ignore argument.type, return.type } } diff --git a/src/Http/HttpRequest.php b/src/Http/HttpRequest.php index d6f2591..08209b4 100644 --- a/src/Http/HttpRequest.php +++ b/src/Http/HttpRequest.php @@ -1,7 +1,7 @@ <?php // HttpRequest.php // Created: 2022-02-08 -// Updated: 2025-03-20 +// Updated: 2025-04-02 namespace Index\Http; @@ -360,16 +360,15 @@ class HttpRequest extends HttpMessage implements ServerRequestInterface, HttpPar return new HttpRequest( $request->getProtocolVersion(), - // @phpstan-ignore-next-line: interface erroneously defines as string[][] instead of array<string, string[]> - $request->getHeaders(), + $request->getHeaders(), // @phpstan-ignore argument.type $request->getBody(), [], $request->getMethod(), HttpUri::castUri($request->getUri()), $queryParams, $cookieParams, - $request->getParsedBody(), // @phpstan-ignore-line: dont care - $request->getUploadedFiles(), // @phpstan-ignore-line: dont care + $request->getParsedBody(), // @phpstan-ignore argument.type + $request->getUploadedFiles(), // @phpstan-ignore argument.type ); } diff --git a/src/XArray.php b/src/XArray.php index 9e1ff7f..8c8d03b 100644 --- a/src/XArray.php +++ b/src/XArray.php @@ -1,7 +1,7 @@ <?php // XArray.php // Created: 2022-02-02 -// Updated: 2025-01-21 +// Updated: 2025-04-02 namespace Index; @@ -10,6 +10,7 @@ use InvalidArgumentException; use Countable; use Iterator; use IteratorAggregate; +use Traversable; /** * Provides various helper methods for collections. @@ -480,7 +481,7 @@ final class XArray { if($iterable instanceof Iterator) return $iterable; if($iterable instanceof IteratorAggregate) - return $iterable->getIterator(); // @phpstan-ignore-line + return self::extractIterator($iterable->getIterator()); // @phpstan-ignore return.type if(is_array($iterable)) return new ArrayIterator($iterable); diff --git a/tests/BencodeSerialisableTest.php b/tests/BencodeSerialisableTest.php index 7fd854d..c0edea4 100644 --- a/tests/BencodeSerialisableTest.php +++ b/tests/BencodeSerialisableTest.php @@ -1,7 +1,7 @@ <?php // BencodeSerialisableTest.php // Created: 2024-09-29 -// Updated: 2025-01-18 +// Updated: 2025-04-02 declare(strict_types=1); @@ -53,9 +53,9 @@ final class BencodeSerialisableTest extends TestCase { #[BencodeProperty(omitIfNull: false)] public mixed $nullValPresent = null; + /** @var array<?scalar> */ #[BencodeProperty] - /** @var scalar[] */ - public array $scalarVals = [null, 0, 1234, 12.34, 'str', true, false]; // @phpstan-ignore-line: idgi?? + public array $scalarVals = [null, 0, 1234, 12.34, 'str', true, false]; #[BencodeProperty('stringVal_method')] public function getStringVal(): string { @@ -112,8 +112,8 @@ final class BencodeSerialisableTest extends TestCase { return null; } - #[BencodeProperty] // @phpstan-ignore-line: idgi?? - /** @return scalar[] */ + /** @return array<?scalar> */ + #[BencodeProperty] public function getScalarVals(): array { return [null, 0, 1234, 12.34, 'str', true, false]; } @@ -156,11 +156,11 @@ final class BencodeSerialisableTest extends TestCase { use BencodeSerializableCommon; #[BencodeProperty('test1')] - #[BencodeProperty('test2')] // @phpstan-ignore-line: this is meant to test the dupe exception + #[BencodeProperty('test2')] // @phpstan-ignore attribute.nonRepeatable public string $stringVal = 'string value'; #[BencodeProperty('test3')] - #[BencodeProperty('test4')] // @phpstan-ignore-line: this is meant to test the dupe exception + #[BencodeProperty('test4')] // @phpstan-ignore attribute.nonRepeatable public function getIntVal(): int { return 1234; } diff --git a/tests/BencodeTest.php b/tests/BencodeTest.php index df47872..def96c7 100644 --- a/tests/BencodeTest.php +++ b/tests/BencodeTest.php @@ -1,7 +1,7 @@ <?php // BencodeTest.php // Created: 2023-07-21 -// Updated: 2024-12-02 +// Updated: 2025-04-02 declare(strict_types=1); @@ -35,15 +35,15 @@ final class BencodeTest extends TestCase { $this->assertIsObject($decoded); $this->assertObjectHasProperty('announce', $decoded); - $this->assertEquals('https://tracker.flashii.net/announce.php/meow', $decoded->announce); // @phpstan-ignore-line: checked above + $this->assertEquals('https://tracker.flashii.net/announce.php/meow', $decoded->announce); // @phpstan-ignore property.notFound $this->assertObjectHasProperty('creation date', $decoded); - $this->assertEquals(1689973664, $decoded->{'creation date'}); // @phpstan-ignore-line: checked above + $this->assertEquals(1689973664, $decoded->{'creation date'}); // @phpstan-ignore property.notFound $this->assertObjectHasProperty('comment', $decoded); - $this->assertEquals('this is the comments field', $decoded->comment); // @phpstan-ignore-line: checked above + $this->assertEquals('this is the comments field', $decoded->comment); // @phpstan-ignore property.notFound $this->assertObjectHasProperty('info', $decoded); - $this->assertIsObject($decoded->info); // @phpstan-ignore-line: checked above + $this->assertIsObject($decoded->info); // @phpstan-ignore property.notFound $this->assertObjectHasProperty('private', $decoded->info); - $this->assertEquals(1, $decoded->info->private); // @phpstan-ignore-line: checked above + $this->assertEquals(1, $decoded->info->private); // @phpstan-ignore property.notFound } public function testEncode(): void { diff --git a/tests/DbConfigTest.php b/tests/DbConfigTest.php index a33d2ca..bec0c52 100644 --- a/tests/DbConfigTest.php +++ b/tests/DbConfigTest.php @@ -1,7 +1,7 @@ <?php // DbConfigTest.php // Created: 2023-10-20 -// Updated: 2025-01-18 +// Updated: 2025-04-02 declare(strict_types=1); @@ -17,8 +17,8 @@ use Index\Db\{DbBackends,DbConnection}; #[CoversClass(GetValueInfoCommon::class)] #[CoversClass(GetValuesCommon::class)] final class DbConfigTest extends TestCase { - private DbConnection $dbConn; // @phpstan-ignore-line: defined by PHPunit in setUp() - private DbConfig $config; // @phpstan-ignore-line: defined by PHPunit in setUp() + private DbConnection $dbConn; // @phpstan-ignore property.uninitialized + private DbConfig $config; // @phpstan-ignore property.uninitialized private const VALUES = [ 'private.allow_password_reset' => 'b:1;', diff --git a/tests/JsonSerializableTest.php b/tests/JsonSerializableTest.php index 9b2cd4e..ad5a62e 100644 --- a/tests/JsonSerializableTest.php +++ b/tests/JsonSerializableTest.php @@ -1,7 +1,7 @@ <?php // JsonSerializableTest.php // Created: 2024-09-29 -// Updated: 2025-01-18 +// Updated: 2025-04-02 declare(strict_types=1); @@ -51,9 +51,9 @@ final class JsonSerializableTest extends TestCase { #[JsonProperty(omitIfNull: false)] public mixed $nullValPresent = null; + /** @var array<?scalar> */ #[JsonProperty] - /** @var scalar[] */ - public array $scalarVals = [null, 0, 1234, 12.34, 'str', true, false]; // @phpstan-ignore-line: idgi?? + public array $scalarVals = [null, 0, 1234, 12.34, 'str', true, false]; #[JsonProperty('stringVal_method')] public function getStringVal(): string { @@ -110,8 +110,8 @@ final class JsonSerializableTest extends TestCase { return null; } - #[JsonProperty] // @phpstan-ignore-line: idgi?? - /** @return scalar[] */ + /** @return array<?scalar> */ + #[JsonProperty] public function getScalarVals(): array { return [null, 0, 1234, 12.34, 'str', true, false]; } @@ -154,11 +154,11 @@ final class JsonSerializableTest extends TestCase { use JsonSerializableCommon; #[JsonProperty('test1')] - #[JsonProperty('test2')] // @phpstan-ignore-line: this is meant to test the dupe exception + #[JsonProperty('test2')] // @phpstan-ignore attribute.nonRepeatable public string $stringVal = 'string value'; #[JsonProperty('test3')] - #[JsonProperty('test4')] // @phpstan-ignore-line: this is meant to test the dupe exception + #[JsonProperty('test4')] // @phpstan-ignore attribute.nonRepeatable public function getIntVal(): int { return 1234; }