File tree Expand file tree Collapse file tree 7 files changed +198
-162
lines changed
Expand file tree Collapse file tree 7 files changed +198
-162
lines changed Original file line number Diff line number Diff line change 2828 "phplrt/compiler" : " ^3.5" ,
2929 "phpunit/phpunit" : " ^10.5" ,
3030 "rector/rector" : " ^0.18" ,
31+ "symfony/var-dumper" : " ^5.6|^6.0|^7.0" ,
3132 "vimeo/psalm" : " ^5.18"
3233 },
3334 "autoload-dev" : {
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change @@ -20,7 +20,14 @@ Identifier -> {
2020 return new Node\Identifier($children->getValue());
2121}
2222 : <T_NAME>
23+ | <T_NAME_WITH_SPACE>
2324 | <T_EQ>
2425 | <T_BOOL_LITERAL>
2526 | <T_NULL_LITERAL>
2627 ;
28+
29+ IdentifierWithExtraSpace -> {
30+ return new Node\Identifier($children->getValue());
31+ }
32+ : <T_NAME_WITH_SPACE>
33+ ;
Original file line number Diff line number Diff line change 1818%token T_NEQ (?i)is\h+not(?![a-zA-Z0-9\-_\x80-\xff])
1919%token T_EQ (?i)is(?![a-zA-Z0-9\-_\x80-\xff])
2020%token T_VARIABLE \$[a-zA-Z_\x80-\xff][a-zA-Z0-9\-_\x80-\xff]*
21+ %token T_NAME_WITH_SPACE [a-zA-Z_\x80-\xff][a-zA-Z0-9\-_\x80-\xff]*\s+?
2122%token T_NAME [a-zA-Z_\x80-\xff][a-zA-Z0-9\-_\x80-\xff]*
2223
2324// Special Chars
Original file line number Diff line number Diff line change @@ -11,8 +11,18 @@ TemplateArguments -> {
1111
1212TemplateArgument -> {
1313 return new Node\Stmt\Template\ArgumentNode(
14- \is_array($children) ? $children[0] : $children,
14+ \array_pop($children),
15+ $children[0] ?? null,
1516 );
1617}
18+ : TemplateHintedArgument()
19+ | TemplateSimpleArgument()
20+ ;
21+
22+ TemplateSimpleArgument
1723 : Type()
1824 ;
25+
26+ TemplateHintedArgument
27+ : IdentifierWithExtraSpace() Type()
28+ ;
Original file line number Diff line number Diff line change @@ -35,14 +35,20 @@ final class Identifier extends Node implements \Stringable
3535 'false ' ,
3636 ];
3737
38+ /**
39+ * @var non-empty-string
40+ */
41+ public readonly string $ value ;
42+
3843 /**
3944 * @param non-empty-string $value
4045 *
4146 * @psalm-suppress RedundantCondition
4247 */
43- public function __construct (
44- public readonly string $ value ,
45- ) {
48+ public function __construct (string $ value )
49+ {
50+ $ this ->value = \trim ($ value );
51+
4652 assert ($ this ->value !== '' , new \InvalidArgumentException (
4753 'Identifier value cannot be empty ' ,
4854 ));
Original file line number Diff line number Diff line change 44
55namespace TypeLang \Parser \Node \Stmt \Template ;
66
7+ use TypeLang \Parser \Node \Identifier ;
78use TypeLang \Parser \Node \Node ;
89use TypeLang \Parser \Node \Stmt \TypeStatement ;
910
1011class ArgumentNode extends Node
1112{
1213 public function __construct (
13- public TypeStatement $ value
14+ public TypeStatement $ value ,
15+ public ?Identifier $ hint = null ,
1416 ) {}
1517
1618 public function toArray (): array
You can’t perform that action at this time.
0 commit comments