| abstract class Test { |
| void testSameEquals(int[] arr1, int[] arr2) { |
| if (arr1[0] == arr2[0] && <warning descr="Condition 'arr1[0] == arr2[0]' is always 'true' when reached">arr1[0] == arr2[0]</warning>) { |
| } |
| } |
| |
| void testMatrices(int[][][] arr1, int[][][] arr2) { |
| if (arr1[0][1][2] == arr1[0][1][3] && |
| <warning descr="Condition 'arr1[0][1][2] == arr1[0][1][3]' is always 'true' when reached">arr1[0][1][2] == arr1[0][1][3]</warning>) { |
| } |
| } |
| |
| void testNotEquals(int[] arr1, int[] arr2) { |
| if (arr1[0] != arr2[0]) return; |
| |
| if (<warning descr="Condition 'arr1[0] == arr2[0]' is always 'true'">arr1[0] == arr2[0]</warning>) {} |
| } |
| |
| void testInvalidatingCall(int[] arr1, int[] arr2) { |
| if (arr1[0] != arr2[0]) return; |
| |
| changeArray(arr1); |
| |
| if (arr1[0] == arr2[0]) {} |
| } |
| abstract void changeArray(int[] array); |
| |
| |
| void testIndirectlyInvalidatingCall(int[] arr1, int[] arr2, int[][] arr3) { |
| arr3[0] = arr1; |
| |
| if (arr1[0] != arr2[0]) return; |
| |
| changeSubArray(arr3); |
| |
| if (arr1[0] == arr2[0]) {} |
| } |
| abstract void changeSubArray(int[][] array); |
| |
| |
| void testAssigning(int[] arr1, int j) { |
| arr1[0] = j; |
| if (<warning descr="Condition 'arr1[0] == j' is always 'true'">arr1[0] == j</warning>) { } |
| } |
| |
| void testReassigning(int[] arr1) { |
| arr1[0] = 1; |
| arr1[1] = 3; |
| if (<warning descr="Condition 'arr1[0] == 1' is always 'true'">arr1[0] == 1</warning>) { } |
| |
| for (int i = 0; i < arr1.length; i++) { |
| arr1[i] = 2; |
| } |
| if (arr1[0] == 1) { } |
| } |
| } |