Skip to content

Commit 421d3f3

Browse files
committed
CallableTypeNode - support $this in return type
1 parent d60fa73 commit 421d3f3

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Diff for: src/Parser/TypeParser.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,8 @@ private function parseCallableReturnType(TokenIterator $tokens): Ast\Type\TypeNo
526526
} elseif ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) {
527527
$type = $this->parse($tokens);
528528
$tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES);
529-
529+
} elseif ($tokens->tryConsumeTokenType(Lexer::TOKEN_THIS_VARIABLE)) {
530+
$type = new Ast\Type\ThisTypeNode();
530531
} else {
531532
$type = new Ast\Type\IdentifierTypeNode($tokens->currentTokenValue());
532533
$tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER);

Diff for: tests/PHPStan/Parser/TypeParserTest.php

+8
Original file line numberDiff line numberDiff line change
@@ -1957,6 +1957,14 @@ public function provideParseData(): array
19571957
)
19581958
),
19591959
],
1960+
[
1961+
'callable(): $this',
1962+
new CallableTypeNode(new IdentifierTypeNode('callable'), [], new ThisTypeNode()),
1963+
],
1964+
[
1965+
'callable(): $this[]',
1966+
new CallableTypeNode(new IdentifierTypeNode('callable'), [], new ArrayTypeNode(new ThisTypeNode())),
1967+
],
19601968
];
19611969
}
19621970

0 commit comments

Comments
 (0)