blob: 0f701eff6b00c018ffd355934936c8d73419f627 [file] [log] [blame]
// @skip-test until these issues are fixed:
// https://github.com/typetools/checker-framework/issues/84
// https://github.com/typetools/checker-framework/issues/766
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 BoxingInterning {
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)
needsInterned(cprimitive2);
// :: (assignment)
@Interned Character cboxed2 = cprimitive2;
short dprimitive = 5;
needsInterned(dprimitive);
@Interned Short dboxed = dprimitive;
short dprimitive2 = 500;
// :: (argument)
needsInterned(dprimitive2);
// :: (assignment)
@Interned Short dboxed2 = dprimitive2;
int eprimitive = 5;
needsInterned(eprimitive);
@Interned Integer eboxed = eprimitive;
int eprimitive2 = 500;
// :: (argument)
needsInterned(eprimitive2);
// :: (assignment)
@Interned Integer eboxed2 = eprimitive2;
long fprimitive = 5;
needsInterned(fprimitive);
@Interned Long fboxed = fboxed;
long fprimitive2 = 500;
// :: (argument)
needsInterned(fprimitive2);
// :: (assignment)
@Interned Long fboxed2 = fboxed2;
float g = (float) 3.14;
// :: (argument)
needsInterned(g);
// :: (assignment)
@Interned Float gboxed = g;
double h = 3.14;
// :: (argument)
needsInterned(h);
// :: (assignment)
@Interned Double hboxed = h;
}
}