diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-28 16:11:37 +0200 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-28 16:11:37 +0200 |
| commit | 0588c38a2c3b4a104c7cbcb8d6fab13593415d90 (patch) | |
| tree | d37b160436b38f879bec2cb5fc04bdd9e5aee6d5 /Zend | |
| parent | b98c148f78de02b1baa865003373136191483d7f (diff) | |
| parent | 345a3b277cf2edb37c8235bf18371bf37ab3b121 (diff) | |
| download | php-git-0588c38a2c3b4a104c7cbcb8d6fab13593415d90.tar.gz | |
Merge branch 'PHP-7.4'
Diffstat (limited to 'Zend')
| -rw-r--r-- | Zend/tests/assert/expect_020.phpt | 17 | ||||
| -rw-r--r-- | Zend/zend_ast.c | 9 |
2 files changed, 25 insertions, 1 deletions
diff --git a/Zend/tests/assert/expect_020.phpt b/Zend/tests/assert/expect_020.phpt new file mode 100644 index 0000000000..ef8fd5ec12 --- /dev/null +++ b/Zend/tests/assert/expect_020.phpt @@ -0,0 +1,17 @@ +--TEST-- +AST pretty-printer +--INI-- +zend.assertions=1 +assert.exception=0 +--FILE-- +<?php +assert(0 && ($a = function () { + $var = 'test'; + $str = "$var, $var[1], {$var}[], {$var[1]}[], ${var}[], ${var[1]}[]"; +})); +?> +--EXPECTF-- +Warning: assert(): assert(0 && ($a = function () { + $var = 'test'; + $str = "$var, {$var[1]}, {$var}[], {$var[1]}[], {$var}[], {$var[1]}[]"; +})) failed in %sexpect_020.php on line %d diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index ee9c9dd326..7a68554ce4 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -1062,6 +1062,11 @@ static ZEND_COLD int zend_ast_valid_var_name(const char *s, size_t len) return 1; } +static ZEND_COLD int zend_ast_var_needs_braces(char ch) +{ + return ch == '[' || zend_ast_valid_var_char(ch); +} + static ZEND_COLD void zend_ast_export_var(smart_str *str, zend_ast *ast, int priority, int indent) { if (ast->kind == ZEND_AST_ZVAL) { @@ -1109,7 +1114,7 @@ static ZEND_COLD void zend_ast_export_encaps_list(smart_str *str, char quote, ze ast->child[0]->kind == ZEND_AST_ZVAL && (i + 1 == list->children || list->child[i + 1]->kind != ZEND_AST_ZVAL || - !zend_ast_valid_var_char( + !zend_ast_var_needs_braces( *Z_STRVAL_P( zend_ast_get_zval(list->child[i + 1]))))) { zend_ast_export_ex(str, ast, 0, indent); @@ -1759,6 +1764,8 @@ simple_list: zend_ast_export_ex(str, ast->child[1], 80, indent); smart_str_appends(str, " => "); } + if (ast->attr) + smart_str_appendc(str, '&'); zend_ast_export_ex(str, ast->child[0], 80, indent); break; case ZEND_AST_NEW: |
