Skip to content

Commit eff902b

Browse files
authored
Merge pull request #113 from CReimer/phpstan-level-3
Implement PHPStan up to level 3
2 parents 777ff6d + b301461 commit eff902b

File tree

9 files changed

+30
-20
lines changed

9 files changed

+30
-20
lines changed

phpstan.neon

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
parameters:
2-
level: 2
2+
level: 3
33
ignoreErrors:
44
-
55
identifier: new.static

src/Collections/MessageCollection.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@
22

33
namespace DirectoryTree\ImapEngine\Collections;
44

5+
use DirectoryTree\ImapEngine\Message;
56
use DirectoryTree\ImapEngine\MessageInterface;
67

78
/**
8-
* @template-extends PaginatedCollection<array-key, \DirectoryTree\ImapEngine\MessageInterface|\DirectoryTree\ImapEngine\Message>
9+
* @template-extends PaginatedCollection<array-key, MessageInterface|Message>
910
*/
1011
class MessageCollection extends PaginatedCollection
1112
{
1213
/**
1314
* Find a message by its UID.
1415
*
15-
* @return \DirectoryTree\ImapEngine\Message|null
16+
* @return MessageInterface|null
1617
*/
1718
public function find(int $uid): ?MessageInterface
1819
{
@@ -24,7 +25,7 @@ public function find(int $uid): ?MessageInterface
2425
/**
2526
* Find a message by its UID or throw an exception.
2627
*
27-
* @return \DirectoryTree\ImapEngine\Message
28+
* @return MessageInterface
2829
*/
2930
public function findOrFail(int $uid): MessageInterface
3031
{

src/Collections/ResponseCollection.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
use Illuminate\Support\Collection;
1010

1111
/**
12-
* @template-extends Collection<array-key, Response>
12+
* @template TKey of array-key
13+
*
14+
* @template-covariant TValue
15+
*
16+
* @extends Collection<array-key, TValue>
1317
*/
1418
class ResponseCollection extends Collection
1519
{

src/Connection/ImapConnection.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,8 @@ protected function newTokenizer(StreamInterface $stream): ImapTokenizer
701701
*/
702702
protected function assertTaggedResponse(string $tag, ?callable $exception = null): TaggedResponse
703703
{
704-
return $this->assertNextResponse(
704+
/** @var TaggedResponse $response */
705+
$response = $this->assertNextResponse(
705706
fn (Response $response) => (
706707
$response instanceof TaggedResponse && $response->tag()->is($tag)
707708
),
@@ -712,6 +713,8 @@ protected function assertTaggedResponse(string $tag, ?callable $exception = null
712713
ImapCommandException::make($this->result->command(), $response)
713714
),
714715
);
716+
717+
return $response;
715718
}
716719

717720
/**

src/HasParsedMessage.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
use ZBateson\MailMimeParser\Header\Part\AddressPart;
1414
use ZBateson\MailMimeParser\Header\Part\ContainerPart;
1515
use ZBateson\MailMimeParser\Header\Part\NameValuePart;
16-
use ZBateson\MailMimeParser\Message as MailMimeMessage;
16+
use ZBateson\MailMimeParser\IMessage;
1717
use ZBateson\MailMimeParser\Message\IMessagePart;
1818

1919
trait HasParsedMessage
2020
{
2121
/**
2222
* The parsed message.
2323
*/
24-
protected ?MailMimeMessage $parsed = null;
24+
protected ?IMessage $parsed = null;
2525

2626
/**
2727
* Get the message date and time.
@@ -224,7 +224,7 @@ public function header(string $name, int $offset = 0): ?IHeader
224224
/**
225225
* Parse the message into a MailMimeMessage instance.
226226
*/
227-
public function parse(): MailMimeMessage
227+
public function parse(): IMessage
228228
{
229229
if ($this->isEmpty()) {
230230
throw new RuntimeException('Cannot parse an empty message');

src/MessageInterface.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Carbon\CarbonInterface;
66
use Stringable;
77
use ZBateson\MailMimeParser\Header\IHeader;
8+
use ZBateson\MailMimeParser\IMessage;
89
use ZBateson\MailMimeParser\Message as MailMimeMessage;
910

1011
interface MessageInterface extends FlaggableInterface, Stringable
@@ -117,7 +118,7 @@ public function header(string $name, int $offset = 0): ?IHeader;
117118
/**
118119
* Parse the message into a MailMimeMessage instance.
119120
*/
120-
public function parse(): MailMimeMessage;
121+
public function parse(): IMessage;
121122

122123
/**
123124
* Determine if the message is the same as another message.

src/MessageParser.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace DirectoryTree\ImapEngine;
44

5+
use ZBateson\MailMimeParser\IMessage;
56
use ZBateson\MailMimeParser\MailMimeParser;
67
use ZBateson\MailMimeParser\Message as MailMimeMessage;
78

@@ -15,7 +16,7 @@ class MessageParser
1516
/**
1617
* Parse the given message contents.
1718
*/
18-
public static function parse(string $contents): MailMimeMessage
19+
public static function parse(string $contents): IMessage
1920
{
2021
return static::parser()->parse($contents, true);
2122
}

src/MessageQuery.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function count(): int
4444
/**
4545
* Get the first message in the resulting collection.
4646
*
47-
* @return Message|null
47+
* @return MessageInterface|null
4848
*/
4949
public function first(): ?MessageInterface
5050
{
@@ -58,7 +58,7 @@ public function first(): ?MessageInterface
5858
/**
5959
* Get the first message in the resulting collection or throw an exception.
6060
*
61-
* @return Message
61+
* @return MessageInterface
6262
*/
6363
public function firstOrFail(): MessageInterface
6464
{
@@ -82,7 +82,7 @@ public function append(string $message, mixed $flags = null): int
8282
$this->folder->path(), $message, Str::enums($flags),
8383
);
8484

85-
return $response // TAG4 OK [APPENDUID <uidvalidity> <uid>] APPEND completed.
85+
return (int) $response // TAG4 OK [APPENDUID <uidvalidity> <uid>] APPEND completed.
8686
->tokenAt(2) // [APPENDUID <uidvalidity> <uid>]
8787
->tokenAt(2) // <uid>
8888
->value;
@@ -169,7 +169,7 @@ public function paginate(int $perPage = 5, $page = null, string $pageName = 'pag
169169
/**
170170
* Find a message by the given identifier type or throw an exception.
171171
*
172-
* @return Message
172+
* @return MessageInterface
173173
*/
174174
public function findOrFail(int $id, ImapFetchIdentifier $identifier = ImapFetchIdentifier::Uid): MessageInterface
175175
{
@@ -186,7 +186,7 @@ public function findOrFail(int $id, ImapFetchIdentifier $identifier = ImapFetchI
186186
/**
187187
* Find a message by the given identifier type.
188188
*
189-
* @return Message|null
189+
* @return MessageInterface|null
190190
*/
191191
public function find(int $id, ImapFetchIdentifier $identifier = ImapFetchIdentifier::Uid): ?MessageInterface
192192
{

src/MessageQueryInterface.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,14 @@ public function count(): int;
129129
/**
130130
* Get the first message in the resulting collection.
131131
*
132-
* @return \DirectoryTree\ImapEngine\Message|null
132+
* @return MessageInterface|null
133133
*/
134134
public function first(): ?MessageInterface;
135135

136136
/**
137137
* Get the first message in the resulting collection or throw an exception.
138138
*
139-
* @return \DirectoryTree\ImapEngine\Message
139+
* @return MessageInterface
140140
*/
141141
public function firstOrFail(): MessageInterface;
142142

@@ -168,14 +168,14 @@ public function paginate(int $perPage = 5, $page = null, string $pageName = 'pag
168168
/**
169169
* Find a message by the given identifier type or throw an exception.
170170
*
171-
* @return \DirectoryTree\ImapEngine\Message
171+
* @return MessageInterface
172172
*/
173173
public function findOrFail(int $id, ImapFetchIdentifier $identifier = ImapFetchIdentifier::Uid): MessageInterface;
174174

175175
/**
176176
* Find a message by the given identifier type.
177177
*
178-
* @return \DirectoryTree\ImapEngine\Message|null
178+
* @return MessageInterface|null
179179
*/
180180
public function find(int $id, ImapFetchIdentifier $identifier = ImapFetchIdentifier::Uid): ?MessageInterface;
181181

0 commit comments

Comments
 (0)