TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

56 lines
974 B

--TEST--
Ternary expression evaluates only selected branch
--FILE--
<?php
function makeArgs(string $name): array
{
echo "args:$name\n";
return [$name];
}
function makeValue(string $name): string
{
echo "value:$name\n";
return $name;
}
function build(string $id, string $value): string
{
echo "body:$id:$value\n";
return $id . ':' . $value;
}
function condition(string $id, string $value): bool
{
echo "cond:$id:$value\n";
return true;
}
function choose(bool $flag): string
{
return $flag
? build(...makeArgs('T'), value: makeValue('T'))
: build(...makeArgs('F'), value: makeValue('F'));
}
function main(): void
{
var_dump(condition(...makeArgs('C'), value: makeValue('C')) ? build('T', 'T') : build('F', 'F'));
var_dump(choose(true));
var_dump(choose(false));
}
?>
--EXPECT--
args:C
value:C
cond:C:C
body:T:T
string(3) "T:T"
args:T
value:T
body:T:T
string(3) "T:T"
args:F
value:F
body:F:F
string(3) "F:F"