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 28
28
"phplrt/compiler" : " ^3.5" ,
29
29
"phpunit/phpunit" : " ^10.5" ,
30
30
"rector/rector" : " ^0.18" ,
31
+ "symfony/var-dumper" : " ^5.6|^6.0|^7.0" ,
31
32
"vimeo/psalm" : " ^5.18"
32
33
},
33
34
"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 -> {
20
20
return new Node\Identifier($children->getValue());
21
21
}
22
22
: <T_NAME>
23
+ | <T_NAME_WITH_SPACE>
23
24
| <T_EQ>
24
25
| <T_BOOL_LITERAL>
25
26
| <T_NULL_LITERAL>
26
27
;
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 18
18
%token T_NEQ (?i)is\h+not(?![a-zA-Z0-9\-_\x80-\xff])
19
19
%token T_EQ (?i)is(?![a-zA-Z0-9\-_\x80-\xff])
20
20
%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+?
21
22
%token T_NAME [a-zA-Z_\x80-\xff][a-zA-Z0-9\-_\x80-\xff]*
22
23
23
24
// Special Chars
Original file line number Diff line number Diff line change @@ -11,8 +11,18 @@ TemplateArguments -> {
11
11
12
12
TemplateArgument -> {
13
13
return new Node\Stmt\Template\ArgumentNode(
14
- \is_array($children) ? $children[0] : $children,
14
+ \array_pop($children),
15
+ $children[0] ?? null,
15
16
);
16
17
}
18
+ : TemplateHintedArgument()
19
+ | TemplateSimpleArgument()
20
+ ;
21
+
22
+ TemplateSimpleArgument
17
23
: Type()
18
24
;
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
35
35
'false ' ,
36
36
];
37
37
38
+ /**
39
+ * @var non-empty-string
40
+ */
41
+ public readonly string $ value ;
42
+
38
43
/**
39
44
* @param non-empty-string $value
40
45
*
41
46
* @psalm-suppress RedundantCondition
42
47
*/
43
- public function __construct (
44
- public readonly string $ value ,
45
- ) {
48
+ public function __construct (string $ value )
49
+ {
50
+ $ this ->value = \trim ($ value );
51
+
46
52
assert ($ this ->value !== '' , new \InvalidArgumentException (
47
53
'Identifier value cannot be empty ' ,
48
54
));
Original file line number Diff line number Diff line change 4
4
5
5
namespace TypeLang \Parser \Node \Stmt \Template ;
6
6
7
+ use TypeLang \Parser \Node \Identifier ;
7
8
use TypeLang \Parser \Node \Node ;
8
9
use TypeLang \Parser \Node \Stmt \TypeStatement ;
9
10
10
11
class ArgumentNode extends Node
11
12
{
12
13
public function __construct (
13
- public TypeStatement $ value
14
+ public TypeStatement $ value ,
15
+ public ?Identifier $ hint = null ,
14
16
) {}
15
17
16
18
public function toArray (): array
You can’t perform that action at this time.
0 commit comments