Handle this typehints
[hiphop-php.git] / hphp / test / slow / foreach_target_variables.php
blobb863ccaca4157b44bb26b38f7de4fdedb3100c47
1 <?php
3 class Test {
4 public $keyProp, $valProp;
5 public static $staticKeyProp, $staticValProp;
7 class Test2 {
8 public static $staticKeyProp, $staticValProp;
11 // Target: Integer array keys
12 $array = [1, 2, 3];
14 $a = [];
15 foreach ($array as $a[0] => &$a[1]) {
16 echo "$a[0] => $a[1],";
17 $a[1] *= -1; // negate values
19 echo "\n";
21 $a = [];
22 foreach ($array as $a[0] => $a[1]) {
23 echo "$a[0] => $a[1],";
25 echo "\n";
27 // Target: Append to array
28 $array = [1, 2, 3];
30 $i = 0;
31 $a = [];
32 foreach ($array as $a[] => &$a[]) {
33 echo $a[$i+1], " => ", $a[$i], ",";
34 $a[$i] *= -1; // negate values
35 $i += 2;
37 echo "\n";
39 $i = 0;
40 $a = [];
41 foreach ($array as $a[] => $a[]) {
42 echo $a[$i+1], " => ", $a[$i], ",";
43 $i += 2;
45 echo "\n";
47 // Target: Non-static properties
48 $array = [1, 2, 3];
50 $obj = new Test;
51 foreach ($array as $obj->keyProp => &$obj->valProp) {
52 echo "$obj->keyProp => $obj->valProp,";
53 $obj->valProp *= -1; // negate values
55 echo "\n";
57 $obj = new Test;
58 foreach ($array as $obj->keyProp => $obj->valProp) {
59 echo "$obj->keyProp => $obj->valProp,";
61 echo "\n";
63 // Target: Static properties
64 $array = [1, 2, 3];
66 foreach ($array as Test::$staticKeyProp => &Test2::$staticValProp) {
67 echo Test::$staticKeyProp, " => ", Test2::$staticValProp, ",";
68 Test2::$staticValProp *= -1; // negate values
70 echo "\n";
72 foreach ($array as Test2::$staticKeyProp => Test::$staticValProp) {
73 echo Test2::$staticKeyProp, " => ", Test::$staticValProp, ",";
75 echo "\n";