'Zero', ); } function simpleShortArray($x) { return [ /* testShortArrayArrowSimple */ 0 => 'Zero', ]; } function simpleLongList($x) { list( /* testLongListArrowSimple */ 0 => $a, ) = $x; } function simpleShortList($x) { [ /* testShortListArrowSimple */ 0 => $a, ] = $x; } function simpleYield($x) { $i = 0; foreach (explode("\n", $x) as $line) { /* testYieldArrowSimple */ yield ++$i => $line; } } function simpleForeach($x) { /* testForeachArrowSimple */ foreach ($x as $k => $value) {} } function simpleMatch($x) { return match ($x) { /* testMatchArrowSimpleSingleCase */ 0 => 'Zero', /* testMatchArrowSimpleMultiCase */ 2, 4, 6 => 'Zero', /* testMatchArrowSimpleSingleCaseWithTrailingComma */ 1, => 'Zero', /* testMatchArrowSimpleMultiCaseWithTrailingComma */ 3, 5, => 'Zero', }; } function simpleArrowFunction($y) { /* testFnArrowSimple */ return fn ($y) => callMe($y); } function matchNestedInMatch() { $x = match ($y) { /* testMatchArrowNestedMatchOuter */ default, => match ($z) { /* testMatchArrowNestedMatchInner */ 1 => 1 }, }; } function matchNestedInLongArrayValue() { $array = array( /* testLongArrayArrowWithNestedMatchValue1 */ 'a' => match ($test) { /* testMatchArrowInLongArrayValue1 */ 1 => 'a', /* testMatchArrowInLongArrayValue2 */ 2 => 'b' }, /* testLongArrayArrowWithNestedMatchValue2 */ $i => match ($test) { /* testMatchArrowInLongArrayValue3 */ 1 => 'a', }, ); } function matchNestedInShortArrayValue() { $array = [ /* testShortArrayArrowWithNestedMatchValue1 */ 'a' => match ($test) { /* testMatchArrowInShortArrayValue1 */ 1 => 'a', /* testMatchArrowInShortArrayValue2 */ 2 => 'b' }, /* testShortArrayArrowWithNestedMatchValue2 */ $i => match ($test) { /* testMatchArrowInShortArrayValue3 */ 1 => 'a', }, ]; } function matchNestedInLongArrayKey() { $array = array( match ($test) { /* testMatchArrowInLongArrayKey1 */ 1 => 'a', /* testMatchArrowInLongArrayKey2 */ 2 => 'b' } /* testLongArrayArrowWithMatchKey */ => 'dynamic keys, woho!', ); } function matchNestedInShortArrayKey() { $array = [ match ($test) { /* testMatchArrowInShortArrayKey1 */ 1 => 'a', /* testMatchArrowInShortArrayKey2 */ 2 => 'b' } /* testShortArrayArrowWithMatchKey */ => 'dynamic keys, woho!', ]; } function arraysNestedInMatch() { $matcher = match ($x) { /* testMatchArrowWithLongArrayBodyWithKeys */ 0 => array( /* testLongArrayArrowInMatchBody1 */ 0 => 1, /* testLongArrayArrowInMatchBody2 */ 'a' => 2, /* testLongArrayArrowInMatchBody3 */ 'b' => 3 ), /* testMatchArrowWithShortArrayBodyWithoutKeys */ 1 => [1, 2, 3], /* testMatchArrowWithLongArrayBodyWithoutKeys */ 2 => array( 1, [1, 2, 3], 2, 3), /* testMatchArrowWithShortArrayBodyWithKeys */ 3 => [ /* testShortArrayArrowInMatchBody1 */ 0 => 1, /* testShortArrayArrowInMatchBody2 */ 'a' => array(1, 2, 3), /* testShortArrayArrowInMatchBody3 */ 'b' => 2, 3 ], /* testShortArrayArrowinMatchCase1 */ [4 => 'a', /* testShortArrayArrowinMatchCase2 */ 5 => 6] /* testMatchArrowWithShortArrayWithKeysAsCase */ => 'match with array as case value', /* testShortArrayArrowinMatchCase3 */ [4 => 'a'], /* testLongArrayArrowinMatchCase4 */ array(5 => 6), /* testMatchArrowWithMultipleArraysWithKeysAsCase */ => 'match with multiple arrays as case value', }; } function matchNestedInArrowFunction($x) { /* testFnArrowWithMatchInValue */ $fn = fn($x) => match(true) { /* testMatchArrowInFnBody1 */ 1, 2, 3, 4, 5 => 'foo', /* testMatchArrowInFnBody2 */ default => 'bar', }; } function arrowFunctionsNestedInMatch($x) { return match ($x) { /* testMatchArrowWithFnBody1 */ 1 => /* testFnArrowInMatchBody1 */ fn($y) => callMe($y), /* testMatchArrowWithFnBody2 */ default => /* testFnArrowInMatchBody2 */ fn($y) => callThem($y) }; } function matchShortArrayMismash() { $array = [ match ($test) { /* testMatchArrowInComplexShortArrayKey1 */ 1 => [ /* testShortArrayArrowInComplexMatchValueinShortArrayKey */ 1 => 'a'], /* testMatchArrowInComplexShortArrayKey2 */ 2 => 'b' /* testShortArrayArrowInComplexMatchArrayMismash */ } => match ($test) { /* testMatchArrowInComplexShortArrayValue1 */ 1 => [ /* testShortArrayArrowInComplexMatchValueinShortArrayValue */ 1 => 'a'], /* testMatchArrowInComplexShortArrayValue2 */ 2 => /* testFnArrowInComplexMatchValueInShortArrayValue */ fn($y) => callMe($y) }, ]; } function longListInMatch($x, $y) { return match($x) { /* testMatchArrowWithLongListBody */ 1 => list('a' => $a, /* testLongListArrowInMatchBody */ 'b' => $b, 'c' => list('d' => $c)) = $y, /* testLongListArrowInMatchCase */ list('a' => $a, 'b' => $b) = $y /* testMatchArrowWithLongListInCase */ => 'something' }; } function shortListInMatch($x, $y) { return match($x) { /* testMatchArrowWithShortListBody */ 1 => ['a' => $a, 'b' => $b, 'c' => /* testShortListArrowInMatchBody */ ['d' => $c]] = $y, /* testShortListArrowInMatchCase */ ['a' => $a, 'b' => $b] = $y /* testMatchArrowWithShortListInCase */ => 'something' }; } function matchInLongList() { /* testMatchArrowInLongListKey */ list(match($x) {1 => 1, 2 => 2} /* testLongListArrowWithMatchInKey */ => $a) = $array; } function matchInShortList() { /* testMatchArrowInShortListKey */ [match($x) {1 => 1, 2 => 2} /* testShortListArrowWithMatchInKey */ => $a] = $array; } function longArrayWithConstantKey() { $arr = array( /* testLongArrayArrowWithClassConstantKey */ SomeClass::DEFAULT => 1, ); } function shortArrayWithConstantKey() { $arr = [ /* testShortArrayArrowWithClassConstantKey */ SomeClass::DEFAULT => 1, ]; } function yieldWithConstantKey() { /* testYieldArrowWithClassConstantKey */ yield SomeClass::DEFAULT => 1; } function longArrayWithConstantKeyNestedInMatch() { return match($x) { /* testMatchArrowWithNestedLongArrayWithClassConstantKey */ default => array( /* testLongArrayArrowWithClassConstantKeyNestedInMatch */ SomeClass::DEFAULT => 1, ), }; } function shortArrayWithConstantKeyNestedInMatch() { return match($x) { /* testMatchArrowWithNestedShortArrayWithClassConstantKey */ default => [ /* testShortArrayArrowWithClassConstantKeyNestedInMatch */ SomeClass::DEFAULT => 1, ], }; } function longArrayWithConstantKeyWithNestedMatch() { return array( /* testLongArrayArrowWithClassConstantKeyWithNestedMatch */ SomeClass::DEFAULT => match($x) { /* testMatchArrowNestedInLongArrayWithClassConstantKey */ default => 'foo' }, ); } function shortArrayWithConstantKeyWithNestedMatch() { return [ /* testShortArrayArrowWithClassConstantKeyWithNestedMatch */ SomeClass::DEFAULT => match($x) { /* testMatchArrowNestedInShortArrayWithClassConstantKey */ default => 'foo' }, ]; }