import checkers.javari.quals.*; class ArrayTest { int @ReadOnly [] rmi; @Mutable Object aMM @Mutable[]; @Mutable Object aMTm[]; @ReadOnly Object aMRo @Mutable []; @Mutable Object aTmM[]; Object aTmTm[]; @ReadOnly Object aTmRo[]; @Mutable Object aRoM @ReadOnly []; Object aRoTm @ReadOnly []; @ReadOnly Object aRoRo @ReadOnly []; void testPrimitiveArray() { int a; //:: (primitive.ro) @ReadOnly int b; // error int[] mmi; int @ReadOnly [] rmi; //:: (primitive.ro) @ReadOnly int[] mri; // error //:: (primitive.ro) @ReadOnly int @ReadOnly [] rri; // error int[][] mmmi; int[] @ReadOnly [] rmmi; int @ReadOnly [][] mrmi; int @ReadOnly [] @ReadOnly [] rrmi; //:: (primitive.ro) @ReadOnly int[][] mmri; // error //:: (primitive.ro) @ReadOnly int[] @ReadOnly [] rmri; // error //:: (primitive.ro) @ReadOnly int @ReadOnly [][] mrri; // error //:: (primitive.ro) @ReadOnly int @ReadOnly [] @ReadOnly [] rrri; // error } void testAM() { // aMM = ... aMM = aMM; aMM = aMTm; //:: (assignment.type.incompatible) aMM = aMRo; // error aMM = aTmM; aMM = aTmTm; //:: (assignment.type.incompatible) aMM = aTmRo; // error //:: (assignment.type.incompatible) aMM = aRoM; // error //:: (assignment.type.incompatible) aMM = aRoTm; // error //:: (assignment.type.incompatible) aMM = aRoRo; // error // aMTm = ... aMTm = aMM; aMTm = aMTm; //:: (assignment.type.incompatible) aMTm = aMRo; // error aMTm = aTmM; aMTm = aTmTm; //:: (assignment.type.incompatible) aMTm = aTmRo; // error //:: (assignment.type.incompatible) aMTm = aRoM; // error //:: (assignment.type.incompatible) aMTm = aRoTm; // error //:: (assignment.type.incompatible) aMTm = aRoRo; // error // aMRo = ... aMRo = aMM; aMRo = aMTm; aMRo = aMRo; aMRo = aTmM; aMRo = aTmTm; aMRo = aTmRo; //:: (assignment.type.incompatible) aMRo = aRoM; // error //:: (assignment.type.incompatible) aMRo = aRoTm; // error //:: (assignment.type.incompatible) aMRo = aRoRo; // error } void testATm() { // aTmM = ... aTmM = aMM; aTmM = aMTm; //:: (assignment.type.incompatible) aTmM = aMRo; // error aTmM = aTmM; aTmM = aTmTm; //:: (assignment.type.incompatible) aTmM = aTmRo; // error //:: (assignment.type.incompatible) aTmM = aRoM; // error //:: (assignment.type.incompatible) aTmM = aRoTm; // error //:: (assignment.type.incompatible) aTmM = aRoRo; // error // aTmTm = ... aTmTm = aMM; aTmTm = aMTm; //:: (assignment.type.incompatible) aTmTm = aMRo; // error aTmTm = aTmM; aTmTm = aTmTm; //:: (assignment.type.incompatible) aTmTm = aTmRo; // error //:: (assignment.type.incompatible) aTmTm = aRoM; // error //:: (assignment.type.incompatible) aTmTm = aRoTm; // error //:: (assignment.type.incompatible) aTmTm = aRoRo; // error // aTmRo = ... aTmRo = aMM; aTmRo = aMTm; aTmRo = aMRo; aTmRo = aTmM; aTmRo = aTmTm; aTmRo = aTmRo; //:: (assignment.type.incompatible) aTmRo = aRoM; // error //:: (assignment.type.incompatible) aTmRo = aRoTm; // error //:: (assignment.type.incompatible) aTmRo = aRoRo; // error } void testARo() { // aRoM = ... aRoM = aMM; aRoM = aMTm; //:: (assignment.type.incompatible) aRoM = aMRo; // error aRoM = aTmM; aRoM = aTmTm; //:: (assignment.type.incompatible) aRoM = aTmRo; // error aRoM = aRoM; aRoM = aRoTm; //:: (assignment.type.incompatible) aRoM = aRoRo; // error // aRoTm = ... aRoTm = aMM; aRoTm = aMTm; //:: (assignment.type.incompatible) aRoTm = aMRo; // error aRoTm = aTmM; aRoTm = aTmTm; //:: (assignment.type.incompatible) aRoTm = aTmRo; // error aRoTm = aRoM; aRoTm = aRoTm; //:: (assignment.type.incompatible) aRoTm = aRoRo; // error // aRoRo = ... aRoRo = aMM; aRoRo = aMTm; aRoRo = aMRo; aRoRo = aTmM; aRoRo = aTmTm; aRoRo = aTmRo; aRoRo = aRoM; aRoRo = aRoTm; aRoRo = aRoRo; } void testAMZero() { // aMM = ... aMM[0] = aMM[0]; aMM[0] = aMTm[0]; //:: (assignment.type.incompatible) aMM[0] = aMRo[0]; // error aMM[0] = aTmM[0]; aMM[0] = aTmTm[0]; //:: (assignment.type.incompatible) aMM[0] = aTmRo[0]; // error aMM[0] = aRoM[0]; aMM[0] = aRoTm[0]; //:: (assignment.type.incompatible) aMM[0] = aRoRo[0]; // error // aMTm = ... aMTm[0] = aMM[0]; aMTm[0] = aMTm[0]; //:: (assignment.type.incompatible) aMTm[0] = aMRo[0]; // error aMTm[0] = aTmM[0]; aMTm[0] = aTmTm[0]; //:: (assignment.type.incompatible) aMTm[0] = aTmRo[0]; // error aMTm[0] = aRoM[0]; aMTm[0] = aRoTm[0]; //:: (assignment.type.incompatible) aMTm[0] = aRoRo[0]; // error // aMRo = ... aMRo[0] = aMM[0]; aMRo[0] = aMTm[0]; aMRo[0] = aMRo[0]; aMRo[0] = aTmM[0]; aMRo[0] = aTmTm[0]; aMRo[0] = aTmRo[0]; aMRo[0] = aRoM[0]; aMRo[0] = aRoTm[0]; aMRo[0] = aRoRo[0]; } void testATmZero() { // aTmM = ... aTmM[0] = aMM[0]; aTmM[0] = aMTm[0]; //:: (assignment.type.incompatible) aTmM[0] = aMRo[0]; // error aTmM[0] = aTmM[0]; aTmM[0] = aTmTm[0]; //:: (assignment.type.incompatible) aTmM[0] = aTmRo[0]; // error aTmM[0] = aRoM[0]; aTmM[0] = aRoTm[0]; //:: (assignment.type.incompatible) aTmM[0] = aRoRo[0]; // error // aTmTm = ... aTmTm[0] = aMM[0]; aTmTm[0] = aMTm[0]; //:: (assignment.type.incompatible) aTmTm[0] = aMRo[0]; // error aTmTm[0] = aTmM[0]; aTmTm[0] = aTmTm[0]; //:: (assignment.type.incompatible) aTmTm[0] = aTmRo[0]; // error aTmTm[0] = aRoM[0]; aTmTm[0] = aRoTm[0]; //:: (assignment.type.incompatible) aTmTm[0] = aRoRo[0]; // error // aTmRo = ... aTmRo[0] = aMM[0]; aTmRo[0] = aMTm[0]; aTmRo[0] = aMRo[0]; aTmRo[0] = aTmM[0]; aTmRo[0] = aTmTm[0]; aTmRo[0] = aTmRo[0]; aTmRo[0] = aRoM[0]; aTmRo[0] = aRoTm[0]; aTmRo[0] = aRoRo[0]; } void testARoZero() { // aRoM = ... aRoM[0] = aMM[0]; aRoM[0] = aMTm[0]; //:: (assignment.type.incompatible) aRoM[0] = aMRo[0]; // error aRoM[0] = aTmM[0]; aRoM[0] = aTmTm[0]; //:: (assignment.type.incompatible) aRoM[0] = aTmRo[0]; // error aRoM[0] = aRoM[0]; aRoM[0] = aRoTm[0]; //:: (assignment.type.incompatible) aRoM[0] = aRoRo[0]; // error // aRoTm = ... aRoTm[0] = aMM[0]; aRoTm[0] = aMTm[0]; //:: (assignment.type.incompatible) aRoTm[0] = aMRo[0]; // error aRoTm[0] = aTmM[0]; aRoTm[0] = aTmTm[0]; //:: (assignment.type.incompatible) aRoTm[0] = aTmRo[0]; // error aRoTm[0] = aRoM[0]; aRoTm[0] = aRoTm[0]; //:: (assignment.type.incompatible) aRoTm[0] = aRoRo[0]; // error // aRoRo = ... aRoRo[0] = aMM[0]; aRoRo[0] = aMTm[0]; aRoRo[0] = aMRo[0]; aRoRo[0] = aTmM[0]; aRoRo[0] = aTmTm[0]; aRoRo[0] = aTmRo[0]; aRoRo[0] = aRoM[0]; aRoRo[0] = aRoTm[0]; aRoRo[0] = aRoRo[0]; } }