Skip to content

Commit 648bb91

Browse files
committed
Resolve phpstan issues
1 parent 4b98624 commit 648bb91

58 files changed

Lines changed: 249 additions & 453 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
analyse::
2-
./vendor/bin/phpstan analyse --level 8 src test
2+
./vendor/bin/phpstan analyse -c phpstan.neon
33

44
test::
55
./vendor/bin/phpunit \

phpstan.neon

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
parameters:
2+
level: 8
3+
paths:
4+
- src
5+
- test
6+
excludePaths:
7+
- test/Integration/Examples/*

src/Parser/Ast/AccessChainSegmentNode.php

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
use PackageFactory\ComponentEngine\Definition\AccessType;
2626
use PackageFactory\ComponentEngine\Parser\Tokenizer\Scanner;
27+
use PackageFactory\ComponentEngine\Parser\Tokenizer\Token;
2728
use PackageFactory\ComponentEngine\Parser\Tokenizer\TokenType;
2829

2930
final class AccessChainSegmentNode implements \JsonSerializable
@@ -41,21 +42,18 @@ private function __construct(
4142
public static function fromTokens(\Iterator $tokens): self
4243
{
4344
Scanner::skipSpaceAndComments($tokens);
45+
Scanner::assertType($tokens, TokenType::PERIOD, TokenType::OPTCHAIN);
4446

45-
switch (Scanner::type($tokens)) {
46-
case TokenType::PERIOD:
47-
case TokenType::OPTCHAIN:
48-
$accessType = AccessType::fromTokenType(Scanner::type($tokens));
49-
Scanner::skipOne($tokens);
50-
$accessor = IdentifierNode::fromTokens($tokens);
51-
return new self(
52-
accessType: $accessType,
53-
accessor: $accessor
54-
);
55-
default:
56-
Scanner::assertType($tokens, TokenType::PERIOD, TokenType::OPTCHAIN);
57-
break;
58-
}
47+
$accessType = AccessType::fromTokenType(Scanner::type($tokens));
48+
49+
Scanner::skipOne($tokens);
50+
51+
$accessor = IdentifierNode::fromTokens($tokens);
52+
53+
return new self(
54+
accessType: $accessType,
55+
accessor: $accessor
56+
);
5957
}
6058

6159
public function jsonSerialize(): mixed

src/Parser/Ast/AccessChainSegmentNodes.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
final class AccessChainSegmentNodes implements \JsonSerializable
3030
{
3131
/**
32-
* @var array<int,AccessChainSegmentNode>
32+
* @var AccessChainSegmentNode[]
3333
*/
3434
public readonly array $items;
3535

@@ -45,7 +45,6 @@ private function __construct(
4545
*/
4646
public static function fromTokens(\Iterator $tokens): self
4747
{
48-
/** @var AccessChainSegmentNode[] $items */
4948
$items = [];
5049
while (true) {
5150
Scanner::skipSpaceAndComments($tokens);

src/Parser/Ast/AttributeNodes.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ private function __construct(
5050
*/
5151
public static function fromTokens(\Iterator $tokens): self
5252
{
53-
/** @var array<string,Attribute> $items */
5453
$items = [];
5554

5655
while (true) {

src/Parser/Ast/BinaryOperandNodes.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,13 @@
2727
use PackageFactory\ComponentEngine\Parser\Tokenizer\Token;
2828
use PackageFactory\ComponentEngine\Parser\Tokenizer\TokenType;
2929

30+
/**
31+
* @implements \IteratorAggregate<ExpressionNode>
32+
*/
3033
final class BinaryOperandNodes implements \IteratorAggregate, \JsonSerializable
3134
{
3235
/**
33-
* @var array<int,ExpressionNode>
36+
* @var ExpressionNode[]
3437
*/
3538
public readonly array $rest;
3639

@@ -74,7 +77,7 @@ public static function fromTokens(ExpressionNode $first, \Iterator $tokens, Bina
7477
Scanner::skipOne($tokens);
7578
break;
7679
default:
77-
if (Scanner::isEnd($tokens) || $precedence->mustStopAt(Scanner::type($tokens))) {
80+
if ($precedence->mustStopAt(Scanner::type($tokens))) {
7881
break 2;
7982
} else {
8083
Scanner::assertType($tokens, $operator->toTokenType());

src/Parser/Ast/EnumMemberDeclarationNodes.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ private function __construct(
5050
*/
5151
public static function fromTokens(\Iterator $tokens): self
5252
{
53-
/** @var array<string,Member> $items */
5453
$items = [];
5554
while (true) {
5655
Scanner::skipSpaceAndComments($tokens);

src/Parser/Ast/ExportNode.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
namespace PackageFactory\ComponentEngine\Parser\Ast;
2424

2525
use PackageFactory\ComponentEngine\Parser\Tokenizer\Scanner;
26+
use PackageFactory\ComponentEngine\Parser\Tokenizer\Token;
2627
use PackageFactory\ComponentEngine\Parser\Tokenizer\TokenType;
2728

2829
final class ExportNode implements \JsonSerializable
@@ -54,7 +55,7 @@ public static function fromTokens(\Iterator $tokens): self
5455
TokenType::KEYWORD_ENUM =>
5556
EnumDeclarationNode::fromTokens($tokens),
5657

57-
default => Scanner::assertType($tokens, TokenType::KEYWORD_COMPONENT, TokenType::KEYWORD_STRUCT, TokenType::KEYWORD_ENUM)
58+
default => throw new \Exception('@TODO: Unexpected Token (outside of Scanner class)')
5859
};
5960

6061
return new self(

src/Parser/Ast/ExportNodes.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,18 @@ final class ExportNodes implements \JsonSerializable
3333
*/
3434
public readonly array $items;
3535

36+
/**
37+
* @param array<string,ExportNode> $items
38+
*/
3639
private function __construct(
37-
ExportNode ...$items
40+
array $items
3841
) {
3942
$this->items = $items;
4043
}
4144

4245
public static function empty(): self
4346
{
44-
return new self();
47+
return new self([]);
4548
}
4649

4750
public function withAddedExport(ExportNode $export): self
@@ -56,7 +59,7 @@ public function withAddedExport(ExportNode $export): self
5659
throw new \Exception('@TODO: Duplicate Export ' . $name);
5760
}
5861

59-
return new self(...$this->items, ...[$name => $export]);
62+
return new self([...$this->items, ...[$name => $export]]);
6063
}
6164

6265
public function get(string $name): ?ExportNode

src/Parser/Ast/ExpressionNode.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public static function fromTokens(\Iterator $tokens, Precedence $precedence = Pr
5555
{
5656
Scanner::skipSpaceAndComments($tokens);
5757

58+
$root = null;
5859
switch (Scanner::type($tokens)) {
5960
case TokenType::BRACKET_ROUND_OPEN:
6061
$lookAhead = LookAhead::fromTokens($tokens);
@@ -110,6 +111,10 @@ public static function fromTokens(\Iterator $tokens, Precedence $precedence = Pr
110111
break;
111112
}
112113

114+
if ($root === null) {
115+
throw new \Exception('@TODO: What on earth went wrong here?');
116+
}
117+
113118
Scanner::skipSpaceAndComments($tokens);
114119
if (Scanner::isEnd($tokens) || $precedence->mustStopAt(Scanner::type($tokens))) {
115120
return new self(

0 commit comments

Comments
 (0)