diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-28 16:09:23 +0200 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-28 16:09:23 +0200 |
| commit | 345a3b277cf2edb37c8235bf18371bf37ab3b121 (patch) | |
| tree | 372bb5b3fca631f1728ae0a1927b1549a55e5056 /Zend | |
| parent | 54dd762f596d4b0ea97d6d10e9d0c96e0f33e76e (diff) | |
| parent | 19d0a51533ddd0622480752f47a8764b8c4cb839 (diff) | |
| download | php-git-345a3b277cf2edb37c8235bf18371bf37ab3b121.tar.gz | |
Merge branch 'PHP-7.3' into 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 953f12b155..427b02b8f6 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -1061,6 +1061,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) { @@ -1108,7 +1113,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: |
