]> granicus.if.org Git - php/commitdiff
Un-nest namespaces - now namespace X { namespace Y {} } is a parse error
authorStanislav Malyshev <stas@php.net>
Wed, 26 Mar 2003 20:42:23 +0000 (20:42 +0000)
committerStanislav Malyshev <stas@php.net>
Wed, 26 Mar 2003 20:42:23 +0000 (20:42 +0000)
Also refine namespaced includes

Zend/zend_execute.c
Zend/zend_language_parser.y

index 76b3586e3667e652209897418c329396f6a29b9a..ffe9c64aeb691de7fa98050dc6242551bfe56504 100644 (file)
@@ -3380,7 +3380,7 @@ int zend_include_or_eval_handler(ZEND_OPCODE_HANDLER_ARGS)
                                        }       
                                
                                        if (zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL)==SUCCESS) {
-                                               CG(active_namespace) = EG(active_namespace);
+                                               CG(active_namespace) = EG(global_namespace_ptr);
                                                new_op_array = zend_compile_file(&file_handle, (EX(opline)->op2.u.constant.value.lval==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
                                                zend_destroy_file_handle(&file_handle TSRMLS_CC);
                                        } else {
@@ -3399,13 +3399,13 @@ int zend_include_or_eval_handler(ZEND_OPCODE_HANDLER_ARGS)
                        break;
                case ZEND_INCLUDE:
                case ZEND_REQUIRE:
-                       CG(active_namespace) = EG(active_namespace);
+                       CG(active_namespace) = EG(global_namespace_ptr);
                        new_op_array = compile_filename(EX(opline)->op2.u.constant.value.lval, inc_filename TSRMLS_CC);
                        break;
                case ZEND_EVAL: {
                                char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC);
 
-                               CG(active_namespace) = EG(active_namespace);
+                               CG(active_namespace) = EG(global_namespace_ptr);
                                new_op_array = compile_string(inc_filename, eval_desc TSRMLS_CC);
                                efree(eval_desc);
                        }
@@ -3431,12 +3431,12 @@ int zend_include_or_eval_handler(ZEND_OPCODE_HANDLER_ARGS)
 
                EX(function_state).function = (zend_function *) new_op_array;
                EX(object) = NULL;
+               EG(active_namespace) = EG(global_namespace_ptr);
                
                zend_execute(new_op_array TSRMLS_CC);
                
-               if(EG(active_namespace) != active_namespace) {
-                       zend_switch_namespace(active_namespace TSRMLS_CC);
-               }
+               zend_switch_namespace(active_namespace TSRMLS_CC);
+
                EX(function_state).function = saved_function;
                EX(object) = saved_object;
                
index 9a4946c4fcae01ec15ec7c89dd3e3f7ee5aca03d..acdbdc69bfcdbd719b1bb85d7869d13051990c9f 100644 (file)
@@ -318,7 +318,6 @@ namespace_statement:
        |       namespace_const_declaration ';'
        |       function_declaration_statement
        |       class_declaration_statement
-       |       namespace_declaration_statement
 ;
 
 namespace_var_declaration_list: