mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix arrow operator precedence
I accidentially added => as the highest-precedence operator...
This commit is contained in:
parent
aa52fcf179
commit
c6d0c55a23
2 changed files with 52 additions and 1 deletions
51
Zend/tests/generators/yield_precedence.phpt
Normal file
51
Zend/tests/generators/yield_precedence.phpt
Normal file
|
@ -0,0 +1,51 @@
|
|||
--TEST--
|
||||
Precedence of yield and arrow operators
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function gen() {
|
||||
yield "a" . "b";
|
||||
yield "a" or die;
|
||||
yield "k" => "a" . "b";
|
||||
yield "k" => "a" or die;
|
||||
var_dump([yield "k" => "a" . "b"]);
|
||||
yield yield "k1" => yield "k2" => "a" . "b";
|
||||
yield yield "k1" => (yield "k2") => "a" . "b";
|
||||
var_dump([yield "k1" => yield "k2" => "a" . "b"]);
|
||||
var_dump([yield "k1" => (yield "k2") => "a" . "b"]);
|
||||
}
|
||||
|
||||
$g = gen();
|
||||
for ($g->rewind(), $i = 1; $g->valid(); $g->send($i), $i++) {
|
||||
echo "{$g->key()} => {$g->current()}\n";
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
0 => ab
|
||||
1 => a
|
||||
k => ab
|
||||
k => a
|
||||
k => ab
|
||||
array(1) {
|
||||
[0]=>
|
||||
int(5)
|
||||
}
|
||||
k2 => ab
|
||||
k1 => 6
|
||||
2 => 7
|
||||
3 => k2
|
||||
k1 => 9
|
||||
10 => ab
|
||||
k2 => ab
|
||||
k1 => 12
|
||||
array(1) {
|
||||
[0]=>
|
||||
int(13)
|
||||
}
|
||||
11 => k2
|
||||
k1 => 14
|
||||
array(1) {
|
||||
[15]=>
|
||||
string(2) "ab"
|
||||
}
|
|
@ -70,6 +70,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
|
|||
%left T_LOGICAL_AND
|
||||
%right T_PRINT
|
||||
%right T_YIELD
|
||||
%right T_DOUBLE_ARROW
|
||||
%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL
|
||||
%left '?' ':'
|
||||
%right T_COALESCE
|
||||
|
@ -93,7 +94,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
|
|||
%left T_ELSE
|
||||
%left T_ENDIF
|
||||
%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC
|
||||
%right T_DOUBLE_ARROW
|
||||
|
||||
%token <ast> T_LNUMBER "integer number (T_LNUMBER)"
|
||||
%token <ast> T_DNUMBER "floating-point number (T_DNUMBER)"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue