cvs: ZendEngine2 / zend_compile.c zend_language_parser.y
| From: | Andi Gutmans | Date: | Wed, 17 Jul 2002 18:36:29 +0000 |
| Subject: | cvs: ZendEngine2 / zend_compile.c zend_language_parser.y | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-265@lists.php.net to get a copy of this message | ||
andi Wed Jul 17 14:36:29 2002 EDT
Modified files:
/ZendEngine2 zend_compile.c zend_language_parser.y
Log:
- Rejuggle some code.
Index: ZendEngine2/zend_compile.c
diff -u ZendEngine2/zend_compile.c:1.293 ZendEngine2/zend_compile.c:1.294
--- ZendEngine2/zend_compile.c:1.293 Mon Jul 15 14:09:56 2002
+++ ZendEngine2/zend_compile.c Wed Jul 17 14:36:29 2002
@@ -918,6 +918,9 @@
op_array.scope = CG(active_class_entry);
if (is_method) {
+ char *foo;
+
+ foo = CG(active_class_entry)->name;
zend_hash_update(&CG(active_class_entry)->function_table, name, name_len+1, &op_array,
sizeof(zend_op_array), (void **) &CG(active_op_array));
if ((CG(active_class_entry)->name_length == (uint) name_len) &&
(!memcmp(CG(active_class_entry)->name, name, name_len))) {
CG(active_class_entry)->constructor = (zend_function *) CG(active_op_array);
@@ -2046,7 +2049,7 @@
new_class_entry->handle_property_get = NULL;
/* code for inheritance from parent class */
- if (parent_class_name) {
+ if (parent_class_name->op_type == IS_CONST) {
zend_class_entry *parent_class, **parent_class_p;
zend_function tmp_zend_function;
zval *tmp;
Index: ZendEngine2/zend_language_parser.y
diff -u ZendEngine2/zend_language_parser.y:1.63 ZendEngine2/zend_language_parser.y:1.64
--- ZendEngine2/zend_language_parser.y:1.63 Mon Jul 15 14:09:56 2002
+++ ZendEngine2/zend_language_parser.y Wed Jul 17 14:36:29 2002
@@ -271,8 +271,12 @@
'(' parameter_list ')' '{' inner_statement_list '}' {
zend_do_end_function_declaration(&$1 TSRMLS_CC); }
| T_OLD_FUNCTION { $1.u.opline_num = CG(zend_lineno); } is_reference T_STRING {
zend_do_begin_function_declaration(&$1, &$4, 0, $3.op_type TSRMLS_CC); }
parameter_list '(' inner_statement_list ')' ';' {
zend_do_end_function_declaration(&$1 TSRMLS_CC); }
- | T_CLASS declaration_class_name { zend_do_begin_class_declaration(&$1, &$2, NULL
TSRMLS_CC); } '{' class_statement_list '}' {
zend_do_end_class_declaration(&$1 TSRMLS_CC); }
- | T_CLASS declaration_class_name T_EXTENDS T_STRING { zend_do_begin_class_declaration(&$1,
&$2, &$4 TSRMLS_CC); } '{' class_statement_list '}' {
zend_do_end_class_declaration(&$1 TSRMLS_CC); }
+ | T_CLASS declaration_class_name extends_from { zend_do_begin_class_declaration(&$1, &$2,
&$3 TSRMLS_CC); } '{' class_statement_list '}' {
zend_do_end_class_declaration(&$1 TSRMLS_CC); }
+;
+
+extends_from:
+ /* empty */ { $$.op_type = IS_UNUSED; }
+ | T_EXTENDS T_STRING { $$ = $2; }
;
declaration_class_name:
@@ -432,8 +436,7 @@
parameter_list ')' '{' inner_statement_list '}' {
zend_do_end_function_declaration(&$1 TSRMLS_CC); }
| T_OLD_FUNCTION { $1.u.opline_num = CG(zend_lineno); } is_reference T_STRING {
zend_do_begin_function_declaration(&$1, &$4, 1, $3.op_type TSRMLS_CC); }
parameter_list '(' inner_statement_list ')' ';' {
zend_do_end_function_declaration(&$1 TSRMLS_CC); }
- | T_CLASS T_STRING { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); }
'{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC);
}
- | T_CLASS T_STRING T_EXTENDS T_STRING { zend_do_begin_class_declaration(&$1, &$2, &$4
TSRMLS_CC); } '{' class_statement_list '}' {
zend_do_end_class_declaration(&$1 TSRMLS_CC); }
+ | T_CLASS T_STRING extends_from { zend_do_begin_class_declaration(&$1, &$2, &$3
TSRMLS_CC); } '{' class_statement_list '}' {
zend_do_end_class_declaration(&$1 TSRMLS_CC); }
;
is_reference: