import testlib.util.Odd; public class Constructors { public Constructors(Constructors con) {} public void testConstructors() { Constructors c = null; new @Odd Constructors(c); } // Test anonymous constructors public Constructors(@Odd String s, int i) {} public void testStaticAnonymousConstructor() { String notOdd = "m"; //:: error: (argument.type.incompatible) new Constructors(notOdd, 0); // error //:: error: (argument.type.incompatible) new Constructors(notOdd, 0) {}; // error } private class MyConstructors extends Constructors { public MyConstructors(@Odd String s) { super(s, 0); } } public static void testAnonymousConstructor() { Constructors m = new Constructors(null) {}; String notOdd = "m"; //:: error: (argument.type.incompatible) m.new MyConstructors(notOdd); // error //:: error: (argument.type.incompatible) m.new MyConstructors(notOdd) {}; // error } // Tests that should pass public void testPassingTests() { @Odd String odd = null; new Constructors(odd, 0); new Constructors(odd, 0) {}; Constructors m = new Constructors(null) {}; m.new MyConstructors(odd); m.new MyConstructors(odd) {}; } }