summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2003-03-26 20:42:23 +0000
committerStanislav Malyshev <stas@php.net>2003-03-26 20:42:23 +0000
commit43e87093c1cfa8f84caac4b138e7bef6777a3c81 (patch)
treef4762f776a730b971ab4ad844dade3667fac30e6 /Zend
parent018d85112998d3dc3011b8d04e5f09f1b6c0e03d (diff)
downloadphp-git-43e87093c1cfa8f84caac4b138e7bef6777a3c81.tar.gz
Un-nest namespaces - now namespace X { namespace Y {} } is a parse error
Also refine namespaced includes
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_execute.c12
-rw-r--r--Zend/zend_language_parser.y1
2 files changed, 6 insertions, 7 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 76b3586e36..ffe9c64aeb 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -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;
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 9a4946c4fc..acdbdc69bf 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -318,7 +318,6 @@ namespace_statement:
| namespace_const_declaration ';'
| function_declaration_statement
| class_declaration_statement
- | namespace_declaration_statement
;
namespace_var_declaration_list: