Skip to content

Commit 75feb75

Browse files
committed
Make T_WITH semi-reserved instead
1 parent eb150ef commit 75feb75

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
Test that "with" is a semi-reserved keyword
3+
--FILE--
4+
<?php
5+
6+
function with() {}
7+
8+
trait T {
9+
public function bar() {}
10+
}
11+
12+
class Foo
13+
{
14+
public const WITH = "with";
15+
16+
public function with() {}
17+
}
18+
19+
?>
20+
--EXPECT--

Zend/zend_language_parser.y

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ start:
300300

301301
reserved_non_modifiers:
302302
T_INCLUDE | T_INCLUDE_ONCE | T_EVAL | T_REQUIRE | T_REQUIRE_ONCE | T_LOGICAL_OR | T_LOGICAL_XOR | T_LOGICAL_AND
303-
| T_INSTANCEOF | T_NEW | T_CLONE | T_WITH | T_EXIT | T_IF | T_ELSEIF | T_ELSE | T_ENDIF | T_ECHO | T_DO | T_WHILE | T_ENDWHILE
303+
| T_INSTANCEOF | T_NEW | T_CLONE | T_EXIT | T_IF | T_ELSEIF | T_ELSE | T_ENDIF | T_ECHO | T_DO | T_WHILE | T_ENDWHILE
304304
| T_FOR | T_ENDFOR | T_FOREACH | T_ENDFOREACH | T_DECLARE | T_ENDDECLARE | T_AS | T_TRY | T_CATCH | T_FINALLY
305305
| T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
306306
| T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT | T_BREAK
@@ -310,7 +310,7 @@ reserved_non_modifiers:
310310

311311
semi_reserved:
312312
reserved_non_modifiers
313-
| T_STATIC | T_ABSTRACT | T_FINAL | T_PRIVATE | T_PROTECTED | T_PUBLIC | T_READONLY
313+
| T_STATIC | T_ABSTRACT | T_FINAL | T_PRIVATE | T_PROTECTED | T_PUBLIC | T_READONLY | T_WITH
314314
;
315315

316316
ampersand:
@@ -570,6 +570,11 @@ function_name:
570570
if (zend_lex_tstring(&zv, $1) == FAILURE) { YYABORT; }
571571
$$ = zend_ast_create_zval(&zv);
572572
}
573+
| T_WITH {
574+
zval zv;
575+
if (zend_lex_tstring(&zv, $1) == FAILURE) { YYABORT; }
576+
$$ = zend_ast_create_zval(&zv);
577+
}
573578
;
574579

575580
function_declaration_statement:
@@ -1323,6 +1328,11 @@ function_call:
13231328
if (zend_lex_tstring(&zv, $1) == FAILURE) { YYABORT; }
13241329
$$ = zend_ast_create(ZEND_AST_CALL, zend_ast_create_zval(&zv), $2);
13251330
}
1331+
| T_WITH argument_list {
1332+
zval zv;
1333+
if (zend_lex_tstring(&zv, $1) == FAILURE) { YYABORT; }
1334+
$$ = zend_ast_create(ZEND_AST_CALL, zend_ast_create_zval(&zv), $2);
1335+
}
13261336
| class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list
13271337
{ $$ = zend_ast_create(ZEND_AST_STATIC_CALL, $1, $3, $4); }
13281338
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list

0 commit comments

Comments
 (0)