$param | $int; /* testTypeUnionArrowReturnType */ $arrowWithReturnType = fn ($param) : int|null => $param * 10; /* testBitwiseOrInArrayKey */ $array = array( A | B => /* testBitwiseOrInArrayValue */ B | C ); /* testBitwiseOrInShortArrayKey */ $array = [ A | B => /* testBitwiseOrInShortArrayValue */ B | C ]; /* testBitwiseOrTryCatch */ try { } catch ( ExceptionA | ExceptionB $e ) { } /* testBitwiseOrNonArrowFnFunctionCall */ $obj->fn($something | $else); /* testTypeUnionNonArrowFunctionDeclaration */ function &fn(int|false $something) {} /* testLiveCoding */ // Intentional parse error. This has to be the last test in the file. return function( type|