forked from typetools/checker-framework
-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Consider the following test case:
import java.util.Comparator;
import org.checkerframework.checker.determinism.qual.PolyDet;
public class ComparatorIssue {
public static void test(
@PolyDet Class<?> @PolyDet [] result, @PolyDet MyComparator classComparator) {
sortProxy(result, classComparator);
}
private static class MyComparator implements Comparator<Class<?>> {
@Override
public int compare(Class<?> c1, Class<?> c2) {
return c1.getName().compareTo(c2.getName());
}
}
public static <T> void sortProxy(T @PolyDet [] a, @PolyDet("use") Comparator<? super T> c) {}
}
Running the command javac -processor determinism checker/tests/determinism/ComparatorIssue.java -AusePolyDefault
results in the following unexpected error:
checker/tests/determinism/ComparatorIssue.java:8: error: [argument.type.incompatible] incompatible argument for parameter c of sortProxy.
sortProxy(result, classComparator);
^
found : @PolyDet MyComparator
required: @PolyDet Comparator<? extends @NonDet Object super @PolyDet Class<? extends @NonDet Object>>
checker/tests/determinism/ComparatorIssue.java:8: error: [argument.type.incompatible] incompatible argument for parameter c of sortProxy.
sortProxy(result, classComparator);
^
found : @PolyDet MyComparator
required: @PolyDet Comparator<? extends @NonDet Object super @PolyDet Class<? extends @NonDet Object>>
2 errors
Metadata
Metadata
Assignees
Labels
No labels