And again, as .txt
Am 11.07.11 00:36 schrieb "Lars Strojny" unter <[email protected]>:
>Hi everybody,
>
>Attached is the patch against current trunk with a testcase, tokenizer
>tests do not break. If nobody objects, could somebody with commit access
>to Zend could commit this patch?
>
>With regards,
>Lars
>
>Am 10.07.11 23:51 schrieb "Nikita Popov" unter
><[email protected]>:
>
>>On Sun, Jul 10, 2011 at 11:37 PM, Lars Strojny <[email protected]> wrote:
>>>
>>> Very good find of an inconsistency. Does the testsuite reveal something
>>> strange with that patch?
>>
>>
>>I didn't test that patch, just found it in the bugtracker.
>>[email protected] would be a better person to ask, as he wrote it. But
>>just from glancing at it I could imagine that it would break
>>token_get_all() as CG(active_class_entry) wouldn't be set
>>appropriately (though that's just a guess).
>>
>>MfG Nikita
>>
>>--
>>PHP Internals - PHP Runtime Development Mailing List
>>To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>
>--
>PHP Internals - PHP Runtime Development Mailing List
>To unsubscribe, visit: http://www.php.net/unsub.php
Index: Zend/zend_language_scanner.l
===================================================================
--- Zend/zend_language_scanner.l (revision 313122)
+++ Zend/zend_language_scanner.l (working copy)
@@ -1007,6 +1007,9 @@
}
<ST_IN_SCRIPTING>"function" {
+ if (CG(active_class_entry)) {
+ yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
+ }
return T_FUNCTION;
}
@@ -1163,6 +1166,14 @@
return T_OBJECT_OPERATOR;
}
+<ST_LOOKING_FOR_PROPERTY>{WHITESPACE} {
+ zendlval->value.str.val = yytext; /* no copying - intentional */
+ zendlval->value.str.len = yyleng;
+ zendlval->type = IS_STRING;
+ HANDLE_NEWLINES(yytext, yyleng);
+ return T_WHITESPACE;
+}
+
<ST_LOOKING_FOR_PROPERTY>{LABEL} {
yy_pop_state(TSRMLS_C);
zend_copy_value(zendlval, yytext, yyleng);
@@ -1177,6 +1188,7 @@
}
<ST_IN_SCRIPTING>"::" {
+ yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
return T_PAAMAYIM_NEKUDOTAYIM;
}
Index: Zend/tests/bug28261.phpt
===================================================================
--- Zend/tests/bug28261.phpt (revision 0)
+++ Zend/tests/bug28261.phpt (revision 0)
@@ -0,0 +1,57 @@
+--TEST--
+Bug #28261: Lifting reserved keyword restriction for method names
+--FILE--
+<?php
+class Test
+{
+ public function eval()
+ {
+ return __METHOD__;
+ }
+
+ public function include()
+ {
+ return __METHOD__;
+ }
+
+ public function print()
+ {
+ return __METHOD__;
+ }
+}
+
+class Test2
+{
+ public function EVAL()
+ {
+ return __METHOD__;
+ }
+ public function INCLUDE()
+ {
+ return __METHOD__;
+ }
+ public function PRINT()
+ {
+ return __METHOD__;
+ }
+}
+
+$o = new Test();
+printf("%s\n", $o->eval());
+printf("%s\n", $o->include());
+printf("%s\n", $o->print());
+
+$o = new Test2();
+printf("%s\n", $o->EVAL());
+printf("%s\n", $o->INCLUDE());
+printf("%s\n", $o->PRINT());
+?>
+=DONE=
+--EXPECT--
+Test::eval
+Test::include
+Test::print
+Test2::EVAL
+Test2::INCLUDE
+Test2::PRINT
+=DONE=
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php