compound_assign_failure.phpt 3.6 KB

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