Handle this typehints
[hiphop-php.git] / hphp / test / quick / test-withref.hhas
blob34679c20ffc0fe6c8b1e490a6b74bd626f44e1ee
1 # WIterInit/WIterNext (which perform iteration with-ref) can only be
2 # tested using hhas.  This file was created by compiling the following
3 # snippet of PHP and changing IterInit/IterNext to their W-flavor
4 # cousins.
6 # $ar = array(5, 6);
7 # var_dump($ar);
9 # $x =& $ar[0];
10 # $x = 7;
11 # var_dump($x);
12 # var_dump($ar);
14 # $ar2 = array();
15 # $k = sprintf("%d", 11);
16 # $v = sprintf("%d", 22);
17 # foreach ($ar as $k => $v) {
18 #   $v = $v * 2;
19 #   $ar2[$k] = $v;
20 # }
21 # var_dump($ar2);
22 # var_dump($ar);
23 # var_dump($x);
25 .adata my_array = """a:2:{i:0;i:5;i:1;i:6;}""";
26 .adata empty = """a:0:{}""";
28 .main {
29       .numiters 1;
30   # line 4
31      Array @my_array
32      SetL $ar
33      PopC
34   # line 5
35     FPushFuncD 1 "var_dump"
36     FPassL 0 $ar Any
37     FCall 1
38     PopR
39   # line 7
40     BaseL $ar Define
41     VGetM 0 EI:0
42     BindL $x
43     PopV
44   # line 8
45     Int 7
46     SetL $x
47     PopC
48   # line 9
49     FPushFuncD 1 "var_dump"
50     FPassL 0 $x Any
51     FCall 1
52     PopR
53   # line 10
54     FPushFuncD 1 "var_dump"
55     FPassL 0 $ar Any
56     FCall 1
57     PopR
58   # line 12
59     Array @empty
60     SetL $ar2
61     PopC
62   # line 13
63     FPushFuncD 2 "sprintf"
64     String "%d"
65     FPassCE 0 Any
66     Int 11
67     FPassCE 1 Any
68     FCall 2
69     UnboxR
70     SetL $k
71     PopC
72   # line 14
73     FPushFuncD 2 "sprintf"
74     String "%d"
75     FPassCE 0 Any
76     Int 22
77     FPassCE 1 Any
78     FCall 2
79     UnboxR
80     SetL $v
81     PopC
82   # line 18
83     CGetL $ar
84     WIterInitK 0 end_loop $v $k
85   # line 16
86 loop:
87     Int 2
88     CGetL2 $v
89     MulO
90     SetL $v
91     PopC
92   # line 17
93     CGetL $v
94     BaseL $ar2 Define
95     SetM 0 EL:$k
96     PopC
97   # line 18
98     WIterNextK 0 loop $v $k
99   # line 19
100 end_loop:
101     FPushFuncD 1 "var_dump"
102     FPassL 0 $ar2 Any
103     FCall 1
104     PopR
105   # line 20
106     FPushFuncD 1 "var_dump"
107     FPassL 0 $ar Any
108     FCall 1
109     PopR
110   # line 21
111     FPushFuncD 1 "var_dump"
112     FPassL 0 $x Any
113     FCall 1
114     PopR
115     Int 1
116     RetC