- 在数组赋值操作中添加临时变量存储以支持返回值 - 为属性赋值操作实现逗号表达式确保右值先计算后赋值 - 添加内部函数参数数量验证机制防止运行时错误 - 优化三元运算符表达式确保类型一致性 - 扩展函数调用优化器以支持参数类型和数量检查 - 添加测试用例验证数组维度赋值返回功能 - 添加测试用例验证属性赋值返回功能 - 添加测试用例验证三元运算符类型转换功能pull/1/head
parent
246689db4c
commit
9138dea99f
6 changed files with 143 additions and 9 deletions
@ -0,0 +1,22 @@ |
||||
--TEST-- |
||||
return assign array dim |
||||
--SKIPIF-- |
||||
--FILE-- |
||||
<?php |
||||
class TestReturnArrayDim |
||||
{ |
||||
public function test() |
||||
{ |
||||
$array['hello'] = [33]; |
||||
return $array['world'] = 999; |
||||
} |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$obj = new TestReturnArrayDim; |
||||
var_dump($obj->test()); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
int(999) |
||||
@ -0,0 +1,41 @@ |
||||
--TEST-- |
||||
return assign array dim |
||||
--SKIPIF-- |
||||
--FILE-- |
||||
<?php |
||||
|
||||
Trait TestReturnTrait { |
||||
protected ?array $array = null; |
||||
|
||||
protected function makeArray(): array { |
||||
return [1, 3, 4]; |
||||
} |
||||
public function test() |
||||
{ |
||||
if ($this->array !== null) { |
||||
return $this->array; |
||||
} |
||||
return $this->array = $this->makeArray(); |
||||
} |
||||
} |
||||
|
||||
class TestReturnAssignSetProp |
||||
{ |
||||
use TestReturnTrait; |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$obj = new TestReturnAssignSetProp; |
||||
var_dump($obj->test()); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
array(3) { |
||||
[0]=> |
||||
int(1) |
||||
[1]=> |
||||
int(3) |
||||
[2]=> |
||||
int(4) |
||||
} |
||||
@ -0,0 +1,30 @@ |
||||
--TEST-- |
||||
return ternary |
||||
--SKIPIF-- |
||||
--FILE-- |
||||
<?php |
||||
|
||||
class TestReturnTernary |
||||
{ |
||||
protected function isA(): bool { |
||||
return false; |
||||
} |
||||
|
||||
protected function isB(): bool { |
||||
return random_int(1, 10000) % 100 < 50; |
||||
} |
||||
|
||||
public function test() |
||||
{ |
||||
return ($this->isA() && $this->isB()) ? 'str' : false; |
||||
} |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$obj = new TestReturnTernary; |
||||
var_dump($obj->test()); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
bool(false) |
||||
Loading…
Reference in new issue