xref: /PHP-8.1/Zend/tests/match/027.phpt (revision 9975986b)
1--TEST--
2Test result of match cannot be modified by reference
3--FILE--
4<?php
5
6// opcache can't be certain Test::usesRef is actually this method
7if (!class_exists('Test')) {
8    class Test {
9        public static function usesRef(&$x) {
10            $x = 'modified';
11        }
12        public static function usesValue($x) {
13            echo "usesValue $x\n";
14        }
15    }
16}
17
18function main() {
19    $i = 0;
20    Test::usesValue(match(true) { true => $i });
21    echo "i is $i\n";
22    $j = 1;
23    Test::usesRef(match(true) { true => $j });
24    echo "j is $j\n";
25}
26main();
27
28?>
29--EXPECTF--
30usesValue 0
31i is 0
32
33Fatal error: Uncaught Error: Test::usesRef(): Argument #1 ($x) cannot be passed by reference in %s:%d
34Stack trace:
35#0 %s(%d): main()
36#1 {main}
37  thrown in %s on line %d
38