From 21d32c2430375cf9edaa0057f615dc14e361078f Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Thu, 29 May 2003 19:27:11 +0000 Subject: [PATCH] Fix ~ operator in class constants. --- Zend/zend_compile.c | 5 ++++- Zend/zend_language_parser.y | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index c26c8455df..8ebfbcb2ac 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -191,7 +191,10 @@ void zend_do_fold_binary_op(zend_uchar op, znode *result, znode *op1, znode *op2 FOLD_CASE(ZEND_BOOL_XOR, boolean_xor_function) case ZEND_BW_NOT: bitwise_not_function(&result->u.constant, &op1->u.constant TSRMLS_CC); - break; + return; + default: + zend_error(E_COMPILE_ERROR, "Unknown binary op opcode %d", op); + return; } do_op(&result->u.constant, &op1->u.constant, &op2->u.constant TSRMLS_CC); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 1b2d116cbb..4ae7a2c8fb 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -457,6 +457,7 @@ optional_class_type: | fully_qualified_class_name { $$ = $1; } ; + function_call_parameter_list: non_empty_function_call_parameter_list { $$ = $1; } | /* empty */ { $$.u.constant.value.lval = 0; } @@ -718,7 +719,7 @@ const_scalar_expr_list: | const_scalar_expr '*' const_scalar_expr { zend_do_fold_binary_op(ZEND_MUL, &$$, &$1, &$3 TSRMLS_CC); } | const_scalar_expr '/' const_scalar_expr { zend_do_fold_binary_op(ZEND_DIV, &$$, &$1, &$3 TSRMLS_CC); } | const_scalar_expr '%' const_scalar_expr { zend_do_fold_binary_op(ZEND_MOD, &$$, &$1, &$3 TSRMLS_CC); } - | const_scalar_expr '~' const_scalar_expr { zend_do_fold_binary_op(ZEND_BW_NOT, &$$, &$1, &$3 TSRMLS_CC); } + | '~' const_scalar_expr { zend_do_fold_binary_op(ZEND_BW_NOT, &$$, &$2, NULL TSRMLS_CC); } | '(' const_scalar_expr ')' { $$ = $2; } ; -- 2.50.1