Skip to content

Commit 5faae7d

Browse files
committed
Add T_TYPE token
1 parent cb494fd commit 5faae7d

File tree

6 files changed

+30
-1
lines changed

6 files changed

+30
-1
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Associated types basic
3+
--FILE--
4+
<?php
5+
6+
interface I {
7+
type T;
8+
public function foo(T $param): T;
9+
}
10+
11+
class C implements I {
12+
public function foo(string $param): string {}
13+
}
14+
15+
?>
16+
--EXPECTF--
17+
Parse error: syntax error, unexpected token "type", expecting "function" in %s on line %d

Zend/zend_language_parser.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
167167
%token <ident> T_TRAIT "'trait'"
168168
%token <ident> T_INTERFACE "'interface'"
169169
%token <ident> T_ENUM "'enum'"
170+
%token <ident> T_TYPE "'type'"
170171
%token <ident> T_EXTENDS "'extends'"
171172
%token <ident> T_IMPLEMENTS "'implements'"
172173
%token <ident> T_NAMESPACE "'namespace'"

Zend/zend_language_scanner.l

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,6 +1545,10 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
15451545
RETURN_TOKEN_WITH_IDENT(T_INTERFACE);
15461546
}
15471547

1548+
<ST_IN_SCRIPTING>"type" {
1549+
RETURN_TOKEN_WITH_IDENT(T_TYPE);
1550+
}
1551+
15481552
<ST_IN_SCRIPTING>"trait" {
15491553
RETURN_TOKEN_WITH_IDENT(T_TRAIT);
15501554
}

ext/tokenizer/tokenizer_data.c

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ext/tokenizer/tokenizer_data.stub.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,11 @@
402402
* @cvalue T_ENUM
403403
*/
404404
const T_ENUM = UNKNOWN;
405+
/**
406+
* @var int
407+
* @cvalue T_TYPE
408+
*/
409+
const T_TYPE = UNKNOWN;
405410
/**
406411
* @var int
407412
* @cvalue T_EXTENDS

ext/tokenizer/tokenizer_data_arginfo.h

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)