// @skip-test import org.checkerframework.checker.interning.qual.Interned; // Per JLS 5.1.7: // * autoboxed Characters in the range '\u0000' to '\u007f' are interned // * autoboxed Booleans are interned // * autoboxed integral types (Byte, Stort, Integer, Long) in the range -128..127 inclusive are interned public class Boxing { void needsInterned(@Interned Object arg) {} void method() { boolean aprimitive = true; needsInterned(aprimitive); @Interned Boolean aboxed = aprimitive; byte bprimitive = 5; needsInterned(bprimitive); @Interned Byte bboxed = bprimitive; char cprimitive = 'a'; needsInterned(cprimitive); @Interned Character c2 = c; char cprimitive2 = (char) 0x2202; //:: (argument.type.incompatible) needsInterned(cprimitive2); //:: (assignment.type.incompatible) @Interned Character cboxed2 = cprimitive2; short dprimitive = 5; needsInterned(dprimitive); @Interned Short dboxed = dprimitive; short dprimitive2 = 500; //:: (argument.type.incompatible) needsInterned(dprimitive2); //:: (assignment.type.incompatible) @Interned Short dboxed2 = dprimitive2; int eprimitive = 5; needsInterned(eprimitive); @Interned Integer eboxed = eprimitive; int eprimitive2 = 500; //:: (argument.type.incompatible) needsInterned(eprimitive2); //:: (assignment.type.incompatible) @Interned Integer eboxed2 = eprimitive2; long fprimitive = 5; needsInterned(fprimitive); @Interned Long fboxed = fboxed; long fprimitive2 = 500; //:: (argument.type.incompatible) needsInterned(fprimitive2); //:: (assignment.type.incompatible) @Interned Long fboxed2 = fboxed2; float g = (float) 3.14; //:: (argument.type.incompatible) needsInterned(g); //:: (assignment.type.incompatible) @Interned Float gboxed = g; double h = 3.14; //:: (argument.type.incompatible) needsInterned(h); //:: (assignment.type.incompatible) @Interned Double hboxed = h; } }