File tree 4 files changed +26
-3
lines changed
4 files changed +26
-3
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ Nullable
13
13
14
14
Atomic
15
15
::= Identifier (Generic | Array )?
16
+ | ThisType
16
17
| ' (' Type ' )' Array ?
17
18
18
19
Generic
@@ -21,8 +22,11 @@ Generic
21
22
Array
22
23
::= (' [' ' ]' )+
23
24
25
+ ThisType
26
+ ::= ' $this'
27
+
24
28
Identifier
25
- ::= (' \' ? Word )+
29
+ ::= (' \\ ' ? Word )+
26
30
27
31
Word
28
32
::= [a-zA-Z_ #x7F- #x10FFFF ][0- 9a- zA- Z_#x7F- #x10FFFF ]*
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ Nullable
13
13
14
14
Atomic
15
15
= Identifier (Generic / Array)?
16
+ / ThisType
16
17
/ '(' Type ')' Array?
17
18
18
19
Generic
@@ -21,8 +22,11 @@ Generic
21
22
Array
22
23
= ('[' ']')+
23
24
25
+ ThisType
26
+ = '$this'
27
+
24
28
Identifier
25
- = ('\'? Word)+
29
+ = ('\\ '? Word)+
26
30
27
31
Word
28
- = [a-zA-Z_\127-\255\\ ][a-zA-Z0-9_\127-\255\\ ]*
32
+ = [a-zA-Z_\\ 127-\\255 ][a-zA-Z0-9_\\ 127-\\255 ]*
Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types = 1 );
2
+
3
+ namespace PHPStan \PhpDocParser \Ast \Type ;
4
+
5
+
6
+ class ThisTypeNode implements TypeNode
7
+ {
8
+ public function __toString (): string
9
+ {
10
+ return '$this ' ;
11
+ }
12
+ }
Original file line number Diff line number Diff line change @@ -38,6 +38,9 @@ private function parseAtomic(TokenIterator $tokens): Ast\Type\TypeNode
38
38
$ type = $ this ->parseArray ($ tokens , $ type );
39
39
}
40
40
41
+ } elseif ($ tokens ->tryConsumeTokenType (Lexer::TOKEN_THIS_VARIABLE )) {
42
+ return new Ast \Type \ThisTypeNode ();
43
+
41
44
} else {
42
45
$ type = new Ast \Type \IdentifierTypeNode ($ tokens ->currentTokenValue ());
43
46
$ tokens ->consumeTokenType (Lexer::TOKEN_IDENTIFIER );
You can’t perform that action at this time.
0 commit comments