import org.checkerframework.checker.interning.qual.Interned; public class Creation { @Interned Foo[] a = new @Interned Foo[22]; // valid class Foo {} @Interned Foo[] fa_field1 = new @Interned Foo[22]; // valid @Interned Foo[] fa_field2 = new @Interned Foo[22]; // valid public void test() { //:: error: (assignment.type.incompatible) @Interned Foo f = new Foo(); // error Foo g = new Foo(); // valid @Interned Foo h = new @Interned Foo(); // valid //:: error: (not.interned) boolean b = (f == g); // error @Interned Foo[] fa1 = new @Interned Foo[22]; // valid @Interned Foo[] fa2 = new @Interned Foo[22]; // valid } public @Interned Object read_data_0() { //:: error: (return.type.incompatible) return new Object(); } public @Interned Object read_data_1() { //:: error: (return.type.incompatible) return new Integer(22); } public @Interned Integer read_data_2() { //:: error: (return.type.incompatible) return new Integer(22); } public @Interned Object read_data_3() { //:: error: (return.type.incompatible) return new String("hello"); } public @Interned String read_data_4() { //:: error: (return.type.incompatible) return new String("hello"); } }