1--TEST--
2Behavior of failing compound assignment
3--INI--
4opcache.optimization_level=0
5--FILE--
6<?php
7
8try {
9	$a = 1;
10	$a %= 0;
11} catch (Error $e) { var_dump($a); }
12
13try {
14	$a = 1;
15	$a >>= -1;
16} catch (Error $e) { var_dump($a); }
17
18try {
19	$a = 1;
20	$a <<= -1;
21} catch (Error $e) { var_dump($a); }
22
23set_error_handler(function($type, $msg) { throw new Exception($msg); });
24
25try {
26	$a = [];
27	$a .= "foo";
28} catch (Throwable $e) { var_dump($a); }
29
30try {
31	$a = "foo";
32	$a .= [];
33} catch (Throwable $e) { var_dump($a); }
34
35$x = new stdClass;
36try { $x += 1; }
37catch (Exception $e) {}
38var_dump($x);
39
40$x = 1;
41try { $x += new stdClass; }
42catch (Exception $e) {}
43var_dump($x);
44
45$x = new stdClass;
46try { $x -= 1; }
47catch (Exception $e) {}
48var_dump($x);
49
50$x = 1;
51try { $x -= new stdClass; }
52catch (Exception $e) {}
53var_dump($x);
54
55$x = new stdClass;
56try { $x *= 1; }
57catch (Exception $e) {}
58var_dump($x);
59
60$x = 1;
61try { $x *= new stdClass; }
62catch (Exception $e) {}
63var_dump($x);
64
65$x = new stdClass;
66try { $x /= 1; }
67catch (Exception $e) {}
68var_dump($x);
69
70$x = 1;
71try { $x /= new stdClass; }
72catch (Exception $e) {}
73var_dump($x);
74
75$x = new stdClass;
76try { $x %= 1; }
77catch (Exception $e) {}
78var_dump($x);
79
80$x = 1;
81try { $x %= new stdClass; }
82catch (Exception $e) {}
83var_dump($x);
84
85$x = new stdClass;
86try { $x **= 1; }
87catch (Exception $e) {}
88var_dump($x);
89
90$x = 1;
91try { $x **= new stdClass; }
92catch (Exception $e) {}
93var_dump($x);
94
95$x = new stdClass;
96try { $x ^= 1; }
97catch (Exception $e) {}
98var_dump($x);
99
100$x = 1;
101try { $x ^= new stdClass; }
102catch (Exception $e) {}
103var_dump($x);
104
105$x = new stdClass;
106try { $x &= 1; }
107catch (Exception $e) {}
108var_dump($x);
109
110$x = 1;
111try { $x &= new stdClass; }
112catch (Exception $e) {}
113var_dump($x);
114
115$x = new stdClass;
116try { $x |= 1; }
117catch (Exception $e) {}
118var_dump($x);
119
120$x = 1;
121try { $x |= new stdClass; }
122catch (Exception $e) {}
123var_dump($x);
124
125$x = new stdClass;
126try { $x <<= 1; }
127catch (Exception $e) {}
128var_dump($x);
129
130$x = 1;
131try { $x <<= new stdClass; }
132catch (Exception $e) {}
133var_dump($x);
134
135$x = new stdClass;
136try { $x >>= 1; }
137catch (Exception $e) {}
138var_dump($x);
139
140$x = 1;
141try { $x >>= new stdClass; }
142catch (Exception $e) {}
143var_dump($x);
144?>
145--EXPECTF--
146int(1)
147int(1)
148int(1)
149array(0) {
150}
151string(3) "foo"
152object(stdClass)#%d (0) {
153}
154int(1)
155object(stdClass)#%d (0) {
156}
157int(1)
158object(stdClass)#%d (0) {
159}
160int(1)
161object(stdClass)#%d (0) {
162}
163int(1)
164object(stdClass)#%d (0) {
165}
166int(1)
167object(stdClass)#%d (0) {
168}
169int(1)
170object(stdClass)#%d (0) {
171}
172int(1)
173object(stdClass)#%d (0) {
174}
175int(1)
176object(stdClass)#%d (0) {
177}
178int(1)
179object(stdClass)#%d (0) {
180}
181int(1)
182object(stdClass)#%d (0) {
183}
184int(1)
185