]> granicus.if.org Git - php/commitdiff
Expr stmts go through ast
authorNikita Popov <nikic@php.net>
Wed, 9 Jul 2014 22:04:27 +0000 (00:04 +0200)
committerNikita Popov <nikic@php.net>
Wed, 9 Jul 2014 22:04:27 +0000 (00:04 +0200)
Zend/zend_compile.c
Zend/zend_language_parser.y

index 294ce9b9a70f8b8af6585ae7d4be279986b28494..f4ac95e07ff504dbf9506da1b898b1ad471bf208 100644 (file)
@@ -7853,7 +7853,12 @@ void zend_compile_stmt(zend_ast *ast TSRMLS_DC) {
                case ZEND_AST_LABEL:
                        zend_compile_label(ast TSRMLS_CC);
                        break;
-               EMPTY_SWITCH_DEFAULT_CASE()
+               default:
+               {
+                       znode result;
+                       zend_compile_expr(&result, ast TSRMLS_CC);
+                       zend_do_free(&result TSRMLS_CC);
+               }
        }
 
        if (Z_LVAL(CG(declarables).ticks) && !zend_is_unticked_stmt(ast)) {
index f5ea217a1ad9146b337a45f5ffbc441fb09ce1b0..07039d2d6f248bd2b0f5dc3a603918d7d338101a 100644 (file)
@@ -349,7 +349,7 @@ unticked_statement:
        |       T_STATIC static_var_list ';' { AN($$); }
        |       T_ECHO echo_expr_list ';' { $$.u.ast = $2.u.ast; }
        |       T_INLINE_HTML { $$.u.ast = zend_ast_create_unary(ZEND_ECHO, AST_ZVAL(&$1)); }
-       |       expr ';'                                { AC($1); zend_do_free(&$1 TSRMLS_CC); AN($$); }
+       |       expr ';' { $$.u.ast = $1.u.ast; }
        |       T_UNSET '(' unset_variables ')' ';' { $$.u.ast = $3.u.ast; }
        |       T_FOREACH '(' variable T_AS
                { zend_do_foreach_begin(&$1, &$2, &$3, &$4, 1 TSRMLS_CC); }