You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MultiTernaryOps.java 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. import org.aspectj.testing.*;
  2. public class MultiTernaryOps {
  3. public static void main(String[] args) {
  4. new MultiTernaryOps().realMain(args);
  5. }
  6. int c = 0;
  7. int z = 0;
  8. public void realMain(String[] args) {
  9. int SIZE = 1000;
  10. int[] xs = new int[SIZE];
  11. boolean b = true;
  12. int e = 123;
  13. Object o = null;
  14. Object ot = new t();
  15. // b?e:e
  16. c(1); xs[c++] = t(0) ? 1 : 2; e();
  17. c(1); xs[c++] = f(0) ? 2 : 1; e();
  18. // b ? (b : e : e) : e
  19. c(2); xs[c++] = t(0) ? f( 1) ? 2 : 1 : 3; e();
  20. c(2); xs[c++] = t(0) ? (f( 1) ? 2 : 1) : 3; e();
  21. // b ? ( b : e : e) : e
  22. c(1); xs[c++] = f(0) ? x() ? 2 : 3 : 1; e();
  23. c(1); xs[c++] = f(0) ? (x() ? 2 : 3) : 1; e();
  24. // b ? (b ? (b ? e : e) : e) : e
  25. c(3); xs[c++] = t(0) ? (t(1) ? (t(2) ? 1 : 2) : 3) : 4; e();
  26. c(3); xs[c++] = t(0) ? t(1) ? (t(2) ? 1 : 2) : 3 : 4; e();
  27. c(3); xs[c++] = t(0) ? t(1) ? t(2) ? 1 : 2 : 3 : 4; e();
  28. c(1); xs[c++] = f(0) ? (x() ? (x() ? 4 : 2) : 3) : 1; e();
  29. c(1); xs[c++] = f(0) ? x() ? (x() ? 4 : 2) : 3 : 1; e();
  30. c(1); xs[c++] = f(0) ? x() ? x() ? 4 : 2 : 3 : 1; e();
  31. c(2); xs[c++] = t(0) ? (f(1) ? (x() ? 2 : 3) : 1) : 4; e();
  32. c(2); xs[c++] = t(0) ? f(1) ? (x() ? 2 : 3) : 1 : 4; e();
  33. c(2); xs[c++] = t(0) ? f(1) ? x() ? 2 : 3 : 1 : 4; e();
  34. c(3); xs[c++] = t(0) ? (t(1) ? (f(2) ? 2 : 1) : 3) : 4; e();
  35. c(3); xs[c++] = t(0) ? t(1) ? (f(2) ? 2 : 1) : 3 : 4; e();
  36. c(3); xs[c++] = t(0) ? t(1) ? f(2) ? 2 : 1 : 3 : 4; e();
  37. // b ? (b ? (b ? (b ? e : e) : e) : e) : e
  38. c(4); xs[c++] = t(0) ? (t(1) ? (t(2) ? (t(3) ? 1 : 2) : 3) : 4) : 5; e();
  39. c(4); xs[c++] = t(0) ? t(1) ? (t(2) ? (t(3) ? 1 : 2) : 3) : 4 : 5; e();
  40. c(4); xs[c++] = t(0) ? t(1) ? t(2) ? (t(3) ? 1 : 2) : 3 : 4 : 5; e();
  41. c(4); xs[c++] = t(0) ? t(1) ? t(2) ? t(3) ? 1 : 2 : 3 : 4 : 5; e();
  42. c(1); xs[c++] = f(0) ? (x() ? (x() ? (x() ? 5 : 2) : 3) : 4) : 1; e();
  43. c(1); xs[c++] = f(0) ? x() ? (x() ? (x() ? 5 : 2) : 3) : 4 : 1; e();
  44. c(1); xs[c++] = f(0) ? x() ? x() ? (x() ? 5 : 2) : 3 : 4 : 1; e();
  45. c(1); xs[c++] = f(0) ? x() ? x() ? x() ? 5 : 2 : 3 : 4 : 1; e();
  46. c(2); xs[c++] = t(0) ? (f(1) ? (x() ? (x() ? 4 : 2) : 3) : 1) : 5; e();
  47. c(2); xs[c++] = t(0) ? f(1) ? (x() ? (x() ? 4 : 2) : 3) : 1 : 5; e();
  48. c(2); xs[c++] = t(0) ? f(1) ? x() ? (x() ? 4 : 2) : 3 : 1 : 5; e();
  49. c(2); xs[c++] = t(0) ? f(1) ? x() ? x() ? 4 : 2 : 3 : 1 : 5; e();
  50. c(3); xs[c++] = t(0) ? (t(1) ? (f(2) ? (x() ? 3 : 2) : 1) : 4) : 5; e();
  51. c(3); xs[c++] = t(0) ? t(1) ? (f(2) ? (x() ? 3 : 2) : 1) : 4 : 5; e();
  52. c(3); xs[c++] = t(0) ? t(1) ? f(2) ? (x() ? 3 : 2) : 1 : 4 : 5; e();
  53. c(3); xs[c++] = t(0) ? t(1) ? f(2) ? x() ? 3 : 2 : 1 : 4 : 5; e();
  54. c(4); xs[c++] = t(0) ? (t(1) ? (t(2) ? (f(3) ? 2 : 1) : 3) : 4) : 5; e();
  55. c(4); xs[c++] = t(0) ? t(1) ? (t(2) ? (f(3) ? 2 : 1) : 3) : 4 : 5; e();
  56. c(4); xs[c++] = t(0) ? t(1) ? t(2) ? (f(3) ? 2 : 1) : 3 : 4 : 5; e();
  57. c(4); xs[c++] = t(0) ? t(1) ? t(2) ? f(3) ? 2 : 1 : 3 : 4 : 5; e();
  58. // b ? e : (b ? e : e)
  59. c(1); xs[c++] = t(0) ? 1 : (x() ? 2 : 3); e();
  60. c(1); xs[c++] = t(0) ? 1 : x() ? 2 : 3 ; e();
  61. c(2); xs[c++] = f(0) ? 2 : (t(1) ? 1 : 3); e();
  62. c(2); xs[c++] = f(0) ? 2 : t(1) ? 1 : 3 ; e();
  63. c(2); xs[c++] = f(0) ? 2 : (f(1) ? 3 : 1); e();
  64. c(2); xs[c++] = f(0) ? 2 : f(1) ? 3 : 1 ; e();
  65. // b ? e : (b ? e : (b ? e : e))
  66. c(1); xs[c++] = t(0) ? 1 : (x() ? 2 : (x() ? 3 : 4)); e();
  67. c(1); xs[c++] = t(0) ? 1 : x() ? 2 : (x() ? 3 : 4) ; e();
  68. c(1); xs[c++] = t(0) ? 1 : x() ? 2 : x() ? 3 : 4 ; e();
  69. c(2); xs[c++] = f(0) ? 2 : (t(1) ? 1 : (x() ? 3 : 4)); e();
  70. c(2); xs[c++] = f(0) ? 2 : t(1) ? 1 : (x() ? 3 : 4) ; e();
  71. c(2); xs[c++] = f(0) ? 2 : t(1) ? 1 : x() ? 3 : 4 ; e();
  72. c(3); xs[c++] = f(0) ? 2 : (f(1) ? 3 : (t(2) ? 1 : 4)); e();
  73. c(3); xs[c++] = f(0) ? 2 : f(1) ? 3 : (t(2) ? 1 : 4) ; e();
  74. c(3); xs[c++] = f(0) ? 2 : f(1) ? 3 : t(2) ? 1 : 4 ; e();
  75. c(3); xs[c++] = f(0) ? 2 : (f(1) ? 3 : (f(2) ? 4 : 1)); e();
  76. c(3); xs[c++] = f(0) ? 2 : f(1) ? 3 : (f(2) ? 4 : 1) ; e();
  77. c(3); xs[c++] = f(0) ? 2 : f(1) ? 3 : f(2) ? 4 : 1 ; e();
  78. // b ? (b ? (b ? e : e) : (b ? e : e)) : e
  79. c(3); xs[c++] = t(0) ? (t(1) ? (t(2) ? 1 : 2) : (x() ? 3 : 4)) : 5; e();
  80. c(3); xs[c++] = t(0) ? (t(1) ? t(2) ? 1 : 2 : (x() ? 3 : 4)) : 5; e();
  81. c(3); xs[c++] = t(0) ? (t(1) ? (t(2) ? 1 : 2) : x() ? 3 : 4 ) : 5; e();
  82. c(3); xs[c++] = t(0) ? t(1) ? (t(2) ? 1 : 2) : x() ? 3 : 4 : 5; e();
  83. c(3); xs[c++] = t(0) ? (t(1) ? t(2) ? 1 : 2 : x() ? 3 : 4 ) : 5; e();
  84. c(3); xs[c++] = t(0) ? t(1) ? t(2) ? 1 : 2 : x() ? 3 : 4 : 5; e();
  85. // b?e:e
  86. c(); xs[c++] = ot instanceof t ? 1 : 2; e();
  87. c(); xs[c++] = o instanceof t ? 2 : 1; e();
  88. // b ? (b : e : e) : e
  89. c(); xs[c++] = ot instanceof t ? o instanceof t ? 2 : 1 : 3; e();
  90. c(); xs[c++] = ot instanceof t ? (o instanceof t ? 2 : 1) : 3; e();
  91. // b ? ( b : e : e) : e
  92. c(); xs[c++] = o instanceof t ? x() ? 2 : 3 : 1; e();
  93. c(); xs[c++] = o instanceof t ? (x() ? 2 : 3) : 1; e();
  94. // b ? (b ? (b ? e : e) : e) : e
  95. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? (ot instanceof t ? 1 : 2) : 3) : 4; e();
  96. c(); xs[c++] = ot instanceof t ? ot instanceof t ? (ot instanceof t ? 1 : 2) : 3 : 4; e();
  97. c(); xs[c++] = ot instanceof t ? ot instanceof t ? ot instanceof t ? 1 : 2 : 3 : 4; e();
  98. c(); xs[c++] = o instanceof t ? (x() ? (x() ? 4 : 2) : 3) : 1; e();
  99. c(); xs[c++] = o instanceof t ? x() ? (x() ? 4 : 2) : 3 : 1; e();
  100. c(); xs[c++] = o instanceof t ? x() ? x() ? 4 : 2 : 3 : 1; e();
  101. c(); xs[c++] = ot instanceof t ? (o instanceof t ? (x() ? 2 : 3) : 1) : 4; e();
  102. c(); xs[c++] = ot instanceof t ? o instanceof t ? (x() ? 2 : 3) : 1 : 4; e();
  103. c(); xs[c++] = ot instanceof t ? o instanceof t ? x() ? 2 : 3 : 1 : 4; e();
  104. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? (o instanceof t ? 2 : 1) : 3) : 4; e();
  105. c(); xs[c++] = ot instanceof t ? ot instanceof t ? (o instanceof t ? 2 : 1) : 3 : 4; e();
  106. c(); xs[c++] = ot instanceof t ? ot instanceof t ? o instanceof t ? 2 : 1 : 3 : 4; e();
  107. // b ? (b ? (b ? (b ? e : e) : e) : e) : e
  108. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? (ot instanceof t ? (ot instanceof t ? 1 : 2) : 3) : 4) : 5; e();
  109. c(); xs[c++] = ot instanceof t ? ot instanceof t ? (ot instanceof t ? (ot instanceof t ? 1 : 2) : 3) : 4 : 5; e();
  110. c(); xs[c++] = ot instanceof t ? ot instanceof t ? ot instanceof t ? (ot instanceof t ? 1 : 2) : 3 : 4 : 5; e();
  111. c(); xs[c++] = ot instanceof t ? ot instanceof t ? ot instanceof t ? ot instanceof t ? 1 : 2 : 3 : 4 : 5; e();
  112. c(); xs[c++] = o instanceof t ? (x() ? (x() ? (x() ? 5 : 2) : 3) : 4) : 1; e();
  113. c(); xs[c++] = o instanceof t ? x() ? (x() ? (x() ? 5 : 2) : 3) : 4 : 1; e();
  114. c(); xs[c++] = o instanceof t ? x() ? x() ? (x() ? 5 : 2) : 3 : 4 : 1; e();
  115. c(); xs[c++] = o instanceof t ? x() ? x() ? x() ? 5 : 2 : 3 : 4 : 1; e();
  116. c(); xs[c++] = ot instanceof t ? (o instanceof t ? (x() ? (x() ? 4 : 2) : 3) : 1) : 5; e();
  117. c(); xs[c++] = ot instanceof t ? o instanceof t ? (x() ? (x() ? 4 : 2) : 3) : 1 : 5; e();
  118. c(); xs[c++] = ot instanceof t ? o instanceof t ? x() ? (x() ? 4 : 2) : 3 : 1 : 5; e();
  119. c(); xs[c++] = ot instanceof t ? o instanceof t ? x() ? x() ? 4 : 2 : 3 : 1 : 5; e();
  120. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? (o instanceof t ? (x() ? 3 : 2) : 1) : 4) : 5; e();
  121. c(); xs[c++] = ot instanceof t ? ot instanceof t ? (o instanceof t ? (x() ? 3 : 2) : 1) : 4 : 5; e();
  122. c(); xs[c++] = ot instanceof t ? ot instanceof t ? o instanceof t ? (x() ? 3 : 2) : 1 : 4 : 5; e();
  123. c(); xs[c++] = ot instanceof t ? ot instanceof t ? o instanceof t ? x() ? 3 : 2 : 1 : 4 : 5; e();
  124. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? (ot instanceof t ? (o instanceof t ? 2 : 1) : 3) : 4) : 5; e();
  125. c(); xs[c++] = ot instanceof t ? ot instanceof t ? (ot instanceof t ? (o instanceof t ? 2 : 1) : 3) : 4 : 5; e();
  126. c(); xs[c++] = ot instanceof t ? ot instanceof t ? ot instanceof t ? (o instanceof t ? 2 : 1) : 3 : 4 : 5; e();
  127. c(); xs[c++] = ot instanceof t ? ot instanceof t ? ot instanceof t ? o instanceof t ? 2 : 1 : 3 : 4 : 5; e();
  128. // b ? e : (b ? e : e)
  129. c(); xs[c++] = ot instanceof t ? 1 : (x() ? 2 : 3); e();
  130. c(); xs[c++] = ot instanceof t ? 1 : x() ? 2 : 3 ; e();
  131. c(); xs[c++] = o instanceof t ? 2 : (ot instanceof t ? 1 : 3); e();
  132. c(); xs[c++] = o instanceof t ? 2 : ot instanceof t ? 1 : 3 ; e();
  133. c(); xs[c++] = o instanceof t ? 2 : (o instanceof t ? 3 : 1); e();
  134. c(); xs[c++] = o instanceof t ? 2 : o instanceof t ? 3 : 1 ; e();
  135. // b ? e : (b ? e : (b ? e : e))
  136. c(); xs[c++] = ot instanceof t ? 1 : (x() ? 2 : (x() ? 3 : 4)); e();
  137. c(); xs[c++] = ot instanceof t ? 1 : x() ? 2 : (x() ? 3 : 4) ; e();
  138. c(); xs[c++] = ot instanceof t ? 1 : x() ? 2 : x() ? 3 : 4 ; e();
  139. c(); xs[c++] = o instanceof t ? 2 : (ot instanceof t ? 1 : (x() ? 3 : 4)); e();
  140. c(); xs[c++] = o instanceof t ? 2 : ot instanceof t ? 1 : (x() ? 3 : 4) ; e();
  141. c(); xs[c++] = o instanceof t ? 2 : ot instanceof t ? 1 : x() ? 3 : 4 ; e();
  142. c(); xs[c++] = o instanceof t ? 2 : (o instanceof t ? 3 : (ot instanceof t ? 1 : 4)); e();
  143. c(); xs[c++] = o instanceof t ? 2 : o instanceof t ? 3 : (ot instanceof t ? 1 : 4) ; e();
  144. c(); xs[c++] = o instanceof t ? 2 : o instanceof t ? 3 : ot instanceof t ? 1 : 4 ; e();
  145. c(); xs[c++] = o instanceof t ? 2 : (o instanceof t ? 3 : (o instanceof t ? 4 : 1)); e();
  146. c(); xs[c++] = o instanceof t ? 2 : o instanceof t ? 3 : (o instanceof t ? 4 : 1) ; e();
  147. c(); xs[c++] = o instanceof t ? 2 : o instanceof t ? 3 : o instanceof t ? 4 : 1 ; e();
  148. // b ? (b ? (b ? e : e) : (b ? e : e)) : e
  149. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? (ot instanceof t ? 1 : 2) : (x() ? 3 : 4)) : 5; e();
  150. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? ot instanceof t ? 1 : 2 : (x() ? 3 : 4)) : 5; e();
  151. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? (ot instanceof t ? 1 : 2) : x() ? 3 : 4 ) : 5; e();
  152. c(); xs[c++] = ot instanceof t ? ot instanceof t ? (ot instanceof t ? 1 : 2) : x() ? 3 : 4 : 5; e();
  153. c(); xs[c++] = ot instanceof t ? (ot instanceof t ? ot instanceof t ? 1 : 2 : x() ? 3 : 4 ) : 5; e();
  154. c(); xs[c++] = ot instanceof t ? ot instanceof t ? ot instanceof t ? 1 : 2 : x() ? 3 : 4 : 5; e();
  155. // += b ? e : e
  156. c(1,0); xs[c++] = z += t(0) ? 1 : 9; e();
  157. c(1,2); xs[c++] = z -= t(0) ? 1 : 9; e();
  158. c(1,1); xs[c++] = z *= t(0) ? 1 : 9; e();
  159. c(1,1); xs[c++] = z /= t(0) ? 1 : 9; e();
  160. c(1,1); xs[c++] = z &= t(0) ? 1 : 9; e();
  161. c(1,0); xs[c++] = z |= t(0) ? 1 : 9; e();
  162. c(1,3); xs[c++] = z ^= t(0) ? 2 : 9; e();
  163. c(1,3); xs[c++] = z %= t(0) ? 2 : 9; e();
  164. c(1,0); xs[c++] = z <<= t(0) ? 1 : 9; e();
  165. c(1,3); xs[c++] = z >>= t(0) ? 1 : 9; e();
  166. c(1,3); xs[c++] = z >>>= t(0) ? 1 : 0; e();
  167. c(1,0); xs[c++] = z += f(0) ? 9 : 1; e();
  168. c(1,2); xs[c++] = z -= f(0) ? 9 : 1; e();
  169. c(1,1); xs[c++] = z *= f(0) ? 9 : 1; e();
  170. c(1,1); xs[c++] = z /= f(0) ? 9 : 1; e();
  171. c(1,1); xs[c++] = z &= f(0) ? 9 : 1; e();
  172. c(1,0); xs[c++] = z |= f(0) ? 9 : 1; e();
  173. c(1,3); xs[c++] = z ^= f(0) ? 9 : 2; e();
  174. c(1,3); xs[c++] = z %= f(0) ? 9 : 2; e();
  175. c(1,0); xs[c++] = z <<= f(0) ? 9 : 1; e();
  176. c(1,3); xs[c++] = z >>= f(0) ? 9 : 1; e();
  177. c(1,3); xs[c++] = z >>>= f(0) ? 0 : 1; e();
  178. // b ? e + (b ? e : e) : e
  179. c(2); xs[c++] = t(0) ? 2 + (t(1) ? -1 : 1) : 3; e();
  180. c(1); xs[c++] = f(0) ? 2 + (x() ? 3 : 1) : 1; e();
  181. c(2); xs[c++] = t(0) ? 2 + (f(1) ? 1 : -1) : 3; e();
  182. // b ? e + (b ? e : e) : (b ? e : e)
  183. c(2); xs[c++] = t(0) ? 2 + (t(1) ? -1 : 1) : (x() ? 3 : 4); e();
  184. c(2); xs[c++] = t(0) ? 2 + (t(1) ? -1 : 1) : x() ? 3 : 4 ; e();
  185. c(2); xs[c++] = f(0) ? 2 + (x() ? -1 : 1) : (t(1) ? 1 : 4); e();
  186. c(2); xs[c++] = f(0) ? 2 + (x() ? -1 : 1) : t(1) ? 1 : 4 ; e();
  187. c(2); xs[c++] = f(0) ? 2 + (x() ? -1 : 1) : (f(1) ? 4 : 1); e();
  188. c(2); xs[c++] = f(0) ? 2 + (x() ? -1 : 1) : f(1) ? 4 : 1 ; e();
  189. c(2); xs[c++] = t(0) ? 2 + (f(1) ? 1 : -1) : (x() ? 3 : 4); e();
  190. c(2); xs[c++] = t(0) ? 2 + (f(1) ? 1 : -1) : x() ? 3 : 4 ; e();
  191. // b ? z = (b ? e : e) : e;
  192. // problems
  193. c(2,-1); xs[c++] = t(0) ? z = (t(1) ? 1 : 2) : 3; e(1);
  194. c(2,-1); xs[c++] = t(0) ? z = t(1) ? 1 : 2 : 3; e(1);
  195. c(1,-1); xs[c++] = f(0) ? z = (x() ? 3 : 2) : 1; e(-1);
  196. c(1,-1); xs[c++] = f(0) ? z = x() ? 3 : 2 : 1; e(-1);
  197. // b ? (z = (b ? e : e)) : (b ? e : e)
  198. // problems
  199. c(2,-1); xs[c++] = t(0) ? (z = (t(1) ? 1 : 2)) : (x() ? 3 : 4); e(1);
  200. c(2,-1); xs[c++] = t(0) ? z = (t(1) ? 1 : 2) : (x() ? 3 : 4); e(1);
  201. c(2,-1); xs[c++] = t(0) ? (z = (t(1) ? 1 : 2)) : x() ? 3 : 4 ; e(1);
  202. c(2,-1); xs[c++] = t(0) ? (z = t(1) ? 1 : 2 ) : (x() ? 3 : 4); e(1);
  203. c(2,-1); xs[c++] = t(0) ? (z = t(1) ? 1 : 2 ) : x() ? 3 : 4 ; e(1);
  204. c(2,-1); xs[c++] = t(0) ? z = (t(1) ? 1 : 2 ) : x() ? 3 : 4 ; e(1);
  205. c(2,-1); xs[c++] = t(0) ? z = t(1) ? 1 : 2 : x() ? 3 : 4 ; e(1);
  206. c(2,-1); xs[c++] = f(0) ? (z = (x() ? 3 : 2)) : (t(1) ? 1 : 4); e(-1);
  207. c(2,-1); xs[c++] = f(0) ? z = (x() ? 3 : 2) : (t(1) ? 1 : 4); e(-1);
  208. c(2,-1); xs[c++] = f(0) ? (z = (x() ? 3 : 2)) : t(1) ? 1 : 4 ; e(-1);
  209. c(2,-1); xs[c++] = f(0) ? (z = x() ? 3 : 2 ) : (t(1) ? 1 : 4); e(-1);
  210. c(2,-1); xs[c++] = f(0) ? (z = x() ? 3 : 2 ) : t(1) ? 1 : 4 ; e(-1);
  211. c(2,-1); xs[c++] = f(0) ? z = (x() ? 3 : 2 ) : t(1) ? 1 : 4 ; e(-1);
  212. c(2,-1); xs[c++] = f(0) ? z = x() ? 3 : 2 : t(1) ? 1 : 4 ; e(-1);
  213. c(2,-1); xs[c++] = f(0) ? (z = (x() ? 3: 2)) : (f(1) ? 4 : 1); e(-1);
  214. c(2,-1); xs[c++] = f(0) ? z = (x() ? 3 : 2) : (f(1) ? 4 : 1); e(-1);
  215. c(2,-1); xs[c++] = f(0) ? (z = (x() ? 3 : 2)) : f(1) ? 4 : 1 ; e(-1);
  216. c(2,-1); xs[c++] = f(0) ? (z = x() ? 3 : 2 ) : (f(1) ? 4 : 1); e(-1);
  217. c(2,-1); xs[c++] = f(0) ? (z = x() ? 3 : 2 ) : f(1) ? 4 : 1 ; e(-1);
  218. c(2,-1); xs[c++] = f(0) ? z = (x() ? 3 : 2 ) : f(1) ? 4 : 1 ; e(-1);
  219. c(2,-1); xs[c++] = f(0) ? z = x() ? 3 : 2 : f(1) ? 4 : 1 ; e(-1);
  220. for (int i = 0; i < xs.length; i++) {
  221. if (xs[i] != 0) {
  222. Tester.check(xs[i]==1, "xs["+i+"]=" + xs[i] + ", not 1!");
  223. }
  224. }
  225. }
  226. static class t {}
  227. int cur = 0;
  228. int expect = -1;
  229. private void c(int expect, int z) { this.expect = expect; cur = 0; this.z = z; }
  230. private void c(int expect) { c(expect, 0); }
  231. private void c() { c(-1); }
  232. private void e(int z) {
  233. if (z != -123) {
  234. Tester.check(this.z == z, c + ": z=" + this.z + ", should be " + z);
  235. }
  236. if (expect >= 0) {
  237. Tester.check(expect == cur, c + ": expect=" + expect + ", should be " + cur);
  238. }
  239. }
  240. private void e() { e(-123); }
  241. private boolean t(int i) { return b(i, true); }
  242. private boolean f(int i) { return b(i, false); }
  243. private boolean x() { return b(-1, false); }
  244. private boolean b(int i, boolean b) {
  245. Tester.check(i >= 0, c + ": this expression shouldn't have been evaluated");
  246. if (i >= 0) Tester.check(i == cur, c + ": i=" + i + ", should be " + cur);
  247. cur++;
  248. return b;
  249. }
  250. }