| 
<?php
 /* testSimpleAssignment */
 $a = false;
 
 /* testControlStructure */
 while(true) {}
 $a = 1;
 
 /* testClosureAssignment */
 $a = function($b=false;){};
 
 /* testHeredocFunctionArg */
 myFunction(<<<END
 Foo
 END
 , 'bar');
 
 /* testSwitch */
 switch ($a) {
 case 1: {break;}
 default: {break;}
 }
 
 /* testStatementAsArrayValue */
 $a = [new Datetime];
 $a = array(new Datetime);
 $a = new Datetime;
 
 /* testUseGroup */
 use Vendor\Package\{ClassA as A, ClassB, ClassC as C};
 
 $a = [
 /* testArrowFunctionArrayValue */
 'a' => fn() => return 1,
 'b' => fn() => return 1,
 ];
 
 /* testStaticArrowFunction */
 static fn ($a) => $a;
 
 /* testArrowFunctionReturnValue */
 fn(): array => [a($a, $b)];
 
 /* testArrowFunctionAsArgument */
 $foo = foo(
 fn() => bar()
 );
 
 /* testArrowFunctionWithArrayAsArgument */
 $foo = foo(
 fn() => [$row[0], $row[3]]
 );
 
 $match = match ($a) {
 /* testMatchCase */
 1 => 'foo',
 /* testMatchDefault */
 default => 'bar'
 };
 
 $match = match ($a) {
 /* testMatchMultipleCase */
 1, 2, => $a * $b,
 /* testMatchDefaultComma */
 default, => 'something'
 };
 
 match ($pressedKey) {
 /* testMatchFunctionCall */
 Key::RETURN_ => save($value, $user)
 };
 
 $result = match (true) {
 /* testMatchFunctionCallArm */
 str_contains($text, 'Welcome') || str_contains($text, 'Hello') => 'en',
 str_contains($text, 'Bienvenue') || str_contains($text, 'Bonjour') => 'fr',
 default => 'pl'
 };
 
 /* testMatchClosure */
 $result = match ($key) {
 1 => function($a, $b) {},
 2 => function($b, $c) {},
 };
 
 /* testMatchArray */
 $result = match ($key) {
 1 => [1,2,3],
 2 => [1 => one(), 2 => two()],
 };
 
 /* testNestedMatch */
 $result = match ($key) {
 1 => match ($key) {
 1 => 'one',
 2 => 'two',
 },
 2 => match ($key) {
 1 => 'two',
 2 => 'one',
 },
 };
 
 return 0;
 
 |