Skip to content

Commit d98f9df

Browse files
author
Kirill Nesmeyanov
committed
Simplify template exceptions
1 parent 5024533 commit d98f9df

File tree

8 files changed

+18
-26
lines changed

8 files changed

+18
-26
lines changed

src/Exception/Definition/Template/MissingTemplateArgumentsException.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,21 @@
44

55
namespace TypeLang\Mapper\Exception\Definition\Template;
66

7-
use TypeLang\Parser\Node\Stmt\TypeStatement;
7+
use TypeLang\Parser\Node\Stmt\NamedTypeNode;
88

99
/**
1010
* Occurs when a type requires more template arguments to be specified than required
1111
*/
1212
class MissingTemplateArgumentsException extends TemplateArgumentsCountException
1313
{
1414
/**
15-
* @param int<0, max> $passedArgumentsCount
1615
* @param int<0, max> $minSupportedArgumentsCount
1716
* @param int<0, max> $maxSupportedArgumentsCount
1817
*/
1918
public static function becauseTemplateArgumentsRangeRequired(
20-
int $passedArgumentsCount,
2119
int $minSupportedArgumentsCount,
2220
int $maxSupportedArgumentsCount,
23-
TypeStatement $type,
21+
NamedTypeNode $type,
2422
?\Throwable $previous = null
2523
): self {
2624
$template = 'Type "{{type}}" expects at least %s template argument(s), '
@@ -31,7 +29,7 @@ public static function becauseTemplateArgumentsRangeRequired(
3129
: \sprintf($template, 'from {{minSupportedArgumentsCount}} to {{maxSupportedArgumentsCount}}');
3230

3331
return new self(
34-
passedArgumentsCount: $passedArgumentsCount,
32+
passedArgumentsCount: $type->arguments?->count() ?? 0,
3533
minSupportedArgumentsCount: $minSupportedArgumentsCount,
3634
maxSupportedArgumentsCount: $maxSupportedArgumentsCount,
3735
type: $type,

src/Exception/Definition/Template/TemplateArgumentsCountException.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace TypeLang\Mapper\Exception\Definition\Template;
66

7-
use TypeLang\Parser\Node\Stmt\TypeStatement;
7+
use TypeLang\Parser\Node\Stmt\NamedTypeNode;
88

99
/**
1010
* Group of errors related to incorrect number of template arguments
@@ -20,12 +20,17 @@ public function __construct(
2020
protected readonly int $passedArgumentsCount,
2121
protected readonly int $minSupportedArgumentsCount,
2222
protected readonly int $maxSupportedArgumentsCount,
23-
TypeStatement $type,
23+
NamedTypeNode $type,
2424
string $template,
2525
int $code = 0,
2626
?\Throwable $previous = null
2727
) {
28-
parent::__construct($type, $template, $code, $previous);
28+
parent::__construct(
29+
type: $type,
30+
template: $template,
31+
code: $code,
32+
previous: $previous,
33+
);
2934
}
3035

3136
/**

src/Exception/Definition/Template/TemplateArgumentsNotSupportedException.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,22 @@
44

55
namespace TypeLang\Mapper\Exception\Definition\Template;
66

7-
use TypeLang\Parser\Node\Stmt\TypeStatement;
7+
use TypeLang\Parser\Node\Stmt\NamedTypeNode;
88

99
/**
1010
* Occurs when a type does not support template arguments
1111
*/
1212
class TemplateArgumentsNotSupportedException extends TemplateArgumentsCountException
1313
{
14-
/**
15-
* @param int<0, max> $passedArgumentsCount
16-
*/
1714
public static function becauseTemplateArgumentsNotSupported(
18-
int $passedArgumentsCount,
19-
TypeStatement $type,
15+
NamedTypeNode $type,
2016
?\Throwable $previous = null
2117
): self {
2218
$template = 'Type "{{type}}" does not support template arguments, '
2319
. 'but {{passedArgumentsCount}} were passed';
2420

2521
return new self(
26-
passedArgumentsCount: $passedArgumentsCount,
22+
passedArgumentsCount: $type->arguments?->count() ?? 0,
2723
minSupportedArgumentsCount: 0,
2824
maxSupportedArgumentsCount: 0,
2925
type: $type,

src/Exception/Definition/Template/TooManyTemplateArgumentsException.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace TypeLang\Mapper\Exception\Definition\Template;
66

7+
use TypeLang\Parser\Node\Stmt\NamedTypeNode;
78
use TypeLang\Parser\Node\Stmt\TypeStatement;
89

910
/**
@@ -12,16 +13,14 @@
1213
class TooManyTemplateArgumentsException extends TemplateArgumentsCountException
1314
{
1415
/**
15-
* @param int<0, max> $passedArgumentsCount
1616
* @param int<0, max> $minSupportedArgumentsCount
1717
* @param int<0, max> $maxSupportedArgumentsCount
1818
*/
1919
public static function becauseTemplateArgumentsRangeOverflows(
20-
int $passedArgumentsCount,
2120
int $minSupportedArgumentsCount,
2221
int $maxSupportedArgumentsCount,
23-
TypeStatement $type,
24-
?\Throwable $previous = null
22+
NamedTypeNode $type,
23+
?\Throwable $previous = null,
2524
): self {
2625
$template = 'Type "{{type}}" only accepts %s template argument(s), '
2726
. 'but {{passedArgumentsCount}} were passed';
@@ -31,7 +30,7 @@ public static function becauseTemplateArgumentsRangeOverflows(
3130
: \sprintf($template, 'from {{minSupportedArgumentsCount}} to {{maxSupportedArgumentsCount}}');
3231

3332
return new self(
34-
passedArgumentsCount: $passedArgumentsCount,
33+
passedArgumentsCount: $type->arguments?->count() ?? 0,
3534
minSupportedArgumentsCount: $minSupportedArgumentsCount,
3635
maxSupportedArgumentsCount: $maxSupportedArgumentsCount,
3736
type: $type,

src/Type/Builder/ArrayTypeBuilder.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ public function build(
6464
1 => $this->buildWithValue($statement, $types, $parser),
6565
2 => $this->buildWithKeyValue($statement, $types),
6666
default => throw TooManyTemplateArgumentsException::becauseTemplateArgumentsRangeOverflows(
67-
passedArgumentsCount: \count($arguments),
6867
minSupportedArgumentsCount: 0,
6968
maxSupportedArgumentsCount: 2,
7069
type: $statement,

src/Type/Builder/Builder.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ protected function expectNoTemplateArguments(NamedTypeNode $stmt): void
3333
}
3434

3535
throw TemplateArgumentsNotSupportedException::becauseTemplateArgumentsNotSupported(
36-
passedArgumentsCount: $stmt->arguments->count(),
3736
type: $stmt,
3837
);
3938
}
@@ -94,7 +93,6 @@ protected function expectTemplateArgumentsLessOrEqualThan(NamedTypeNode $stmt, i
9493
}
9594

9695
throw TooManyTemplateArgumentsException::becauseTemplateArgumentsRangeOverflows(
97-
passedArgumentsCount: $stmt->arguments->count(),
9896
minSupportedArgumentsCount: $min,
9997
maxSupportedArgumentsCount: $max,
10098
type: $stmt,
@@ -131,7 +129,6 @@ protected function expectTemplateArgumentsGreaterOrEqualThan(NamedTypeNode $stmt
131129
}
132130

133131
throw MissingTemplateArgumentsException::becauseTemplateArgumentsRangeRequired(
134-
passedArgumentsCount: $actualArgumentsCount,
135132
minSupportedArgumentsCount: $min,
136133
maxSupportedArgumentsCount: $max ?? $min,
137134
type: $stmt,

src/Type/Builder/IntRangeTypeBuilder.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ public function build(
4444
1 => $this->buildWithMinValue($statement, $arguments[0]),
4545
2 => $this->buildWithMinMaxValues($statement, $arguments[0], $arguments[1]),
4646
default => throw TooManyTemplateArgumentsException::becauseTemplateArgumentsRangeOverflows(
47-
passedArgumentsCount: \count($arguments),
4847
minSupportedArgumentsCount: 0,
4948
maxSupportedArgumentsCount: 2,
5049
type: $statement,

src/Type/Builder/ListTypeBuilder.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ public function build(
5656
0 => $this->buildWithNoValue($types, $parser),
5757
1 => $this->buildWithValue($statement, $types),
5858
default => throw TooManyTemplateArgumentsException::becauseTemplateArgumentsRangeOverflows(
59-
passedArgumentsCount: \count($arguments),
6059
minSupportedArgumentsCount: 0,
6160
maxSupportedArgumentsCount: 1,
6261
type: $statement,

0 commit comments

Comments
 (0)