MF5: allow aggregating use statements

This commit is contained in:
Stanislav Malyshev 2008-06-08 09:51:42 +00:00
parent 08c9c2af1f
commit 15b74d008a
3 changed files with 34 additions and 4 deletions

9
Zend/tests/ns_065.inc Executable file
View File

@ -0,0 +1,9 @@
<?php
namespace X::Y;
function foo() {
echo __FUNCTION__."\n";
}
namespace X::Z;
function foo() {
echo __FUNCTION__."\n";
}

13
Zend/tests/ns_065.phpt Executable file
View File

@ -0,0 +1,13 @@
--TEST--
065: Multiple names in use statement
--FILE--
<?php
use X::Y as test, X::Z as test2;
require "ns_065.inc";
test::foo();
test2::foo();
--EXPECT--
X::Y::foo
X::Z::foo

View File

@ -174,13 +174,21 @@ top_statement:
| class_declaration_statement { zend_do_early_binding(TSRMLS_C); }
| T_HALT_COMPILER '(' ')' ';' { zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; }
| T_NAMESPACE namespace_name ';' { zend_do_namespace(&$2 TSRMLS_CC); }
| T_USE namespace_name ';' { zend_do_use(&$2, NULL, 0 TSRMLS_CC); }
| T_USE namespace_name T_AS T_STRING ';' { zend_do_use(&$2, &$4, 0 TSRMLS_CC); }
| T_USE T_PAAMAYIM_NEKUDOTAYIM T_STRING ';' { zend_do_use(&$3, NULL, 1 TSRMLS_CC); }
| T_USE T_PAAMAYIM_NEKUDOTAYIM T_STRING T_AS T_STRING ';' { zend_do_use(&$3, &$5, 1 TSRMLS_CC); }
| T_USE use_declarations ';'
| constant_declaration ';'
;
use_declarations:
use_declarations ',' use_declaration
| use_declaration
use_declaration:
namespace_name { zend_do_use(&$1, NULL, 0 TSRMLS_CC); }
| namespace_name T_AS T_STRING { zend_do_use(&$1, &$3, 0 TSRMLS_CC); }
| T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_use(&$2, NULL, 1 TSRMLS_CC); }
| T_PAAMAYIM_NEKUDOTAYIM T_STRING T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); }
constant_declaration:
constant_declaration ',' T_STRING '=' static_scalar { zend_do_declare_constant(&$3, &$5 TSRMLS_CC); }
| T_CONST T_STRING '=' static_scalar { zend_do_declare_constant(&$2, &$4 TSRMLS_CC); }