compound_assign_failure.phpt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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 (Exception $e) {}
  31. var_dump($x);
  32. $x = 1;
  33. try { $x += new stdClass; }
  34. catch (Exception $e) {}
  35. var_dump($x);
  36. $x = new stdClass;
  37. try { $x -= 1; }
  38. catch (Exception $e) {}
  39. var_dump($x);
  40. $x = 1;
  41. try { $x -= new stdClass; }
  42. catch (Exception $e) {}
  43. var_dump($x);
  44. $x = new stdClass;
  45. try { $x *= 1; }
  46. catch (Exception $e) {}
  47. var_dump($x);
  48. $x = 1;
  49. try { $x *= new stdClass; }
  50. catch (Exception $e) {}
  51. var_dump($x);
  52. $x = new stdClass;
  53. try { $x /= 1; }
  54. catch (Exception $e) {}
  55. var_dump($x);
  56. $x = 1;
  57. try { $x /= new stdClass; }
  58. catch (Exception $e) {}
  59. var_dump($x);
  60. $x = new stdClass;
  61. try { $x %= 1; }
  62. catch (Exception $e) {}
  63. var_dump($x);
  64. $x = 1;
  65. try { $x %= new stdClass; }
  66. catch (Exception $e) {}
  67. var_dump($x);
  68. $x = new stdClass;
  69. try { $x **= 1; }
  70. catch (Exception $e) {}
  71. var_dump($x);
  72. $x = 1;
  73. try { $x **= new stdClass; }
  74. catch (Exception $e) {}
  75. var_dump($x);
  76. $x = new stdClass;
  77. try { $x ^= 1; }
  78. catch (Exception $e) {}
  79. var_dump($x);
  80. $x = 1;
  81. try { $x ^= new stdClass; }
  82. catch (Exception $e) {}
  83. var_dump($x);
  84. $x = new stdClass;
  85. try { $x &= 1; }
  86. catch (Exception $e) {}
  87. var_dump($x);
  88. $x = 1;
  89. try { $x &= new stdClass; }
  90. catch (Exception $e) {}
  91. var_dump($x);
  92. $x = new stdClass;
  93. try { $x |= 1; }
  94. catch (Exception $e) {}
  95. var_dump($x);
  96. $x = 1;
  97. try { $x |= new stdClass; }
  98. catch (Exception $e) {}
  99. var_dump($x);
  100. $x = new stdClass;
  101. try { $x <<= 1; }
  102. catch (Exception $e) {}
  103. var_dump($x);
  104. $x = 1;
  105. try { $x <<= new stdClass; }
  106. catch (Exception $e) {}
  107. var_dump($x);
  108. $x = new stdClass;
  109. try { $x >>= 1; }
  110. catch (Exception $e) {}
  111. var_dump($x);
  112. $x = 1;
  113. try { $x >>= new stdClass; }
  114. catch (Exception $e) {}
  115. var_dump($x);
  116. ?>
  117. --EXPECTF--
  118. int(1)
  119. int(1)
  120. int(1)
  121. array(0) {
  122. }
  123. string(3) "foo"
  124. object(stdClass)#%d (0) {
  125. }
  126. int(1)
  127. object(stdClass)#%d (0) {
  128. }
  129. int(1)
  130. object(stdClass)#%d (0) {
  131. }
  132. int(1)
  133. object(stdClass)#%d (0) {
  134. }
  135. int(1)
  136. object(stdClass)#%d (0) {
  137. }
  138. int(1)
  139. object(stdClass)#%d (0) {
  140. }
  141. int(1)
  142. object(stdClass)#%d (0) {
  143. }
  144. int(1)
  145. object(stdClass)#%d (0) {
  146. }
  147. int(1)
  148. object(stdClass)#%d (0) {
  149. }
  150. int(1)
  151. object(stdClass)#%d (0) {
  152. }
  153. int(1)
  154. object(stdClass)#%d (0) {
  155. }
  156. int(1)