// Test case that was submitted in Issue 402, but was combined with Issue 979 // https://github.com/typetools/checker-framework/issues/979 // @below-java8-jdk-skip-test import java.util.Comparator; import javax.annotation.CheckForNull; import javax.annotation.Nullable; // Type argument inference does not infer the correct types. // Once Issue 979 is fixed, this suppression should be removed. @SuppressWarnings({"nullness", "keyfor"}) // Issue 979 public final class Issue402 { static final Comparator<Issue402> COMPARATOR = Comparator.comparing( Issue402::getStr1, Comparator.nullsFirst(Comparator.naturalOrder())) .thenComparing( Issue402::getStr2, Comparator.nullsFirst(Comparator.naturalOrder())); @CheckForNull private final String str1; @CheckForNull private final String str2; Issue402(@Nullable final String str1, @Nullable final String str2) { this.str1 = str1; this.str2 = str2; } @CheckForNull String getStr1() { return this.str1; } @CheckForNull String getStr2() { return this.str2; } }