| import org.checkerframework.checker.nullness.qual.*; |
| import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; |
| |
| public class AssertParameterNullness { |
| |
| /** True iff both sequences are non-null and have the same length. */ |
| @EnsuresNonNullIf( |
| result = true, |
| expression = {"#1", "#2"}) |
| /* pure */ public static boolean sameLength( |
| final boolean @Nullable [] seq1, final boolean @Nullable [] seq2) { |
| if ((seq1 != null) && (seq2 != null) && seq1.length == seq2.length) { |
| return true; |
| } |
| return false; |
| } |
| |
| /* pure */ public static boolean pairwiseEqual( |
| boolean @Nullable [] seq3, boolean @Nullable [] seq4) { |
| if (sameLength(seq3, seq4)) { |
| boolean b1 = seq3[0]; |
| boolean b2 = seq4[0]; |
| } else { |
| // :: error: (accessing.nullable) |
| boolean b1 = seq3[0]; |
| // :: error: (accessing.nullable) |
| boolean b2 = seq4[0]; |
| } |
| return true; |
| } |
| } |