]> granicus.if.org Git - php/commitdiff
Fix ~ operator in class constants.
authorMarcus Boerger <helly@php.net>
Thu, 29 May 2003 19:27:11 +0000 (19:27 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 29 May 2003 19:27:11 +0000 (19:27 +0000)
Zend/zend_compile.c
Zend/zend_language_parser.y

index c26c8455df2a3e75acd39c6ed6c97c3124061f49..8ebfbcb2ac875f3defac95408536d45f2e5a49c5 100644 (file)
@@ -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);
index 1b2d116cbbb748fe15e13b119cec8926a20230ed..4ae7a2c8fb87f23f9a16ec2173f72333dd8dd49e 100644 (file)
@@ -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; }
 ;