diff --git a/Zend/tests/readonly_function.phpt b/Zend/tests/readonly_function.phpt new file mode 100644 index 0000000000000..0262b3b7348ce --- /dev/null +++ b/Zend/tests/readonly_function.phpt @@ -0,0 +1,16 @@ +--TEST-- +Can use readonly as a function name +--FILE-- + +--EXPECT-- +Hi! +Hi! diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index cc424bbec0a64..56c57a5a08543 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1718,6 +1718,12 @@ NEWLINE ("\r"|"\n"|"\r\n") RETURN_TOKEN_WITH_IDENT(T_READONLY); } +/* Don't treat "readonly(" as a keyword, to allow using it as a function name. */ +"readonly"[ \n\r\t]*"(" { + yyless(strlen("readonly")); + RETURN_TOKEN_WITH_STR(T_STRING, 0); +} + "unset" { RETURN_TOKEN_WITH_IDENT(T_UNSET); }