blob: 6715eb6633c14ebc64022b02e1b72ed32c1506d4 [file] [log] [blame]
import org.checkerframework.framework.testchecker.util.*;
/*
* See Issue 137:
* https://github.com/typetools/checker-framework/issues/137
*/
public class GenericTest7 {
interface A {}
interface B<T> {}
interface C<U> {}
public <I extends B<A> & C<A>> void one(I i) {
B<A> i1 = i;
C<A> i2 = i;
}
public <I extends B<A> & C<A>> void oneA(I i) {
// :: error: (assignment)
@Odd B<A> i1 = i;
// :: error: (assignment)
@Odd C<A> i2 = i;
}
public <I extends @Odd B<A> & @Odd C<A>> void oneB(I i) {
@Odd B<A> i1 = i;
@Odd C<A> i2 = i;
}
public <I extends B<? extends A> & C<? extends A>> void two(I i) {
B<? extends A> i1 = i;
C<? extends A> i2 = i;
}
public <I extends B<? extends A> & C<? extends A>> void twoA(I i) {
// :: error: (assignment)
@Odd B<? extends A> i1 = i;
// :: error: (assignment)
@Odd C<? extends A> i2 = i;
}
public <I extends @Odd B<? extends A> & @Odd C<? extends A>> void twoB(I i) {
@Odd B<? extends A> i1 = i;
@Odd C<? extends A> i2 = i;
}
public <I extends B<? extends @Odd A> & C<? extends @Odd A>> void twoC(I i) {
B<? extends A> i1 = i;
C<? extends A> i2 = i;
B<? extends @Odd A> i3 = i;
C<? extends @Odd A> i4 = i;
}
}