mirror of
https://github.com/php/php-src.git
synced 2026-04-25 17:08:14 +02:00
Support isset() on temporaries
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
isset() can be used on dereferences of temporary expressions
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
var_dump(isset([0, 1][0]));
|
||||
var_dump(isset(([0, 1] + [])[0]));
|
||||
var_dump(isset([[0, 1]][0][0]));
|
||||
var_dump(isset(([[0, 1]] + [])[0][0]));
|
||||
var_dump(isset(((object) ['a' => 'b'])->a));
|
||||
var_dump(isset(['a' => 'b']->a));
|
||||
var_dump(isset("str"->a));
|
||||
var_dump(isset((['a' => 'b'] + [])->a));
|
||||
var_dump(isset((['a' => 'b'] + [])->a->b));
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
+6
-6
@@ -1317,7 +1317,7 @@ ZEND_VM_HANDLER(87, ZEND_FETCH_DIM_RW, VAR|CV, CONST|TMP|VAR|UNUSED|CV)
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(90, ZEND_FETCH_DIM_IS, VAR|CV, CONST|TMP|VAR|CV)
|
||||
ZEND_VM_HANDLER(90, ZEND_FETCH_DIM_IS, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
|
||||
{
|
||||
USE_OPLINE
|
||||
zend_free_op free_op1, free_op2;
|
||||
@@ -1473,7 +1473,7 @@ ZEND_VM_HANDLER(88, ZEND_FETCH_OBJ_RW, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(91, ZEND_FETCH_OBJ_IS, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||
ZEND_VM_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||
{
|
||||
USE_OPLINE
|
||||
zend_free_op free_op1;
|
||||
@@ -4627,7 +4627,7 @@ ZEND_VM_HANDLER(114, ZEND_ISSET_ISEMPTY_VAR, CONST|TMP|VAR|CV, UNUSED|CONST|VAR)
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(115, ZEND_ISSET_ISEMPTY_DIM_OBJ, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||
ZEND_VM_HANDLER(115, ZEND_ISSET_ISEMPTY_DIM_OBJ, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||
{
|
||||
USE_OPLINE
|
||||
zend_free_op free_op1, free_op2;
|
||||
@@ -4731,12 +4731,12 @@ ZEND_VM_C_LABEL(str_index_prop):
|
||||
|
||||
FREE_OP2();
|
||||
ZVAL_BOOL(EX_VAR(opline->result.var), result);
|
||||
FREE_OP1_IF_VAR();
|
||||
FREE_OP1();
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
||||
ZEND_VM_HANDLER(148, ZEND_ISSET_ISEMPTY_PROP_OBJ, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||
ZEND_VM_HANDLER(148, ZEND_ISSET_ISEMPTY_PROP_OBJ, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||
{
|
||||
USE_OPLINE
|
||||
zend_free_op free_op1, free_op2;
|
||||
@@ -4764,7 +4764,7 @@ ZEND_VM_HANDLER(148, ZEND_ISSET_ISEMPTY_PROP_OBJ, VAR|UNUSED|CV, CONST|TMP|VAR|C
|
||||
|
||||
FREE_OP2();
|
||||
ZVAL_BOOL(EX_VAR(opline->result.var), result);
|
||||
FREE_OP1_IF_VAR();
|
||||
FREE_OP1();
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
||||
+1532
-32
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user