Discard NS doc comments

This commit is contained in:
Nikita Popov 2014-07-22 13:52:35 +02:00
parent 130b6340d2
commit 776800b0a0
3 changed files with 18 additions and 7 deletions

View file

@ -551,6 +551,13 @@ static inline zend_bool zend_is_function_or_method_call(const znode *variable) /
#define MAKE_NOP(opline) { opline->opcode = ZEND_NOP; memset(&opline->result,0,sizeof(opline->result)); memset(&opline->op1,0,sizeof(opline->op1)); memset(&opline->op2,0,sizeof(opline->op2)); opline->result_type=opline->op1_type=opline->op2_type=IS_UNUSED; }
void zend_discard_doc_comment(TSRMLS_D) {
if (CG(doc_comment)) {
STR_RELEASE(CG(doc_comment));
CG(doc_comment) = NULL;
}
}
static void zend_do_op_data(zend_op *data_op, znode *value TSRMLS_DC) /* {{{ */
{
data_op->opcode = ZEND_OP_DATA;

View file

@ -474,6 +474,8 @@ ZEND_API unary_op_type get_unary_op(int opcode);
ZEND_API binary_op_type get_binary_op(int opcode);
ZEND_API void zend_make_immutable_array(zval *zv TSRMLS_DC);
void zend_discard_doc_comment(TSRMLS_D);
/* parser-driven code generators */
void zend_do_free(znode *op1 TSRMLS_DC);

View file

@ -250,11 +250,14 @@ top_statement:
| class_declaration_statement { $$.u.ast = $1.u.ast; }
| T_HALT_COMPILER '(' ')' ';' { AN($$); zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; }
| T_NAMESPACE namespace_name ';'
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, AST_ZVAL(&$2), NULL); }
| T_NAMESPACE namespace_name '{' top_statement_list '}'
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, AST_ZVAL(&$2), $4.u.ast); }
| T_NAMESPACE '{' top_statement_list '}'
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, NULL, $3.u.ast); }
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, AST_ZVAL(&$2), NULL);
zend_discard_doc_comment(TSRMLS_C); }
| T_NAMESPACE namespace_name { zend_discard_doc_comment(TSRMLS_C); }
'{' top_statement_list '}'
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, AST_ZVAL(&$2), $5.u.ast); }
| T_NAMESPACE { zend_discard_doc_comment(TSRMLS_C); }
'{' top_statement_list '}'
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_NAMESPACE, NULL, $4.u.ast); }
| T_USE use_declarations ';'
{ $$.u.ast = $2.u.ast; $$.u.ast->attr = T_CLASS; }
| T_USE T_FUNCTION use_declarations ';'
@ -608,8 +611,7 @@ class_statement:
variable_modifiers property_list ';'
{ $$.u.ast = $2.u.ast; $$.u.ast->attr = Z_LVAL($1.u.constant); }
| T_CONST class_const_list ';'
{ $$.u.ast = $2.u.ast;
if (CG(doc_comment)) { STR_RELEASE(CG(doc_comment)); CG(doc_comment) = NULL; } }
{ $$.u.ast = $2.u.ast; zend_discard_doc_comment(TSRMLS_C); }
| T_USE name_list trait_adaptations
{ $$.u.ast = zend_ast_create_binary(ZEND_AST_USE_TRAIT, $2.u.ast, $3.u.ast); }
| method_modifiers function returns_ref T_STRING '(' parameter_list ')' method_body