blob: 582ce0648f510d9e9d2d37360d388644050c27ff [file] [log] [blame]
/*
* @test
* @summary Test that defaulted types are stored in bytecode.
*
* @compile ../PersistUtil.java Driver.java ReferenceInfoUtil.java Classes.java
* @run main Driver Classes
*/
import static com.sun.tools.classfile.TypeAnnotation.TargetType.CLASS_TYPE_PARAMETER;
import static com.sun.tools.classfile.TypeAnnotation.TargetType.CLASS_TYPE_PARAMETER_BOUND;
public class Classes {
/* TODO: store extends/implements in TypesIntoElements.
@TADescriptions({
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = CLASS_EXTENDS, typeIndex=-1),
@TADescription(annotation = "org/checkerframework/checker/initialization/qual/Initialized", type = CLASS_EXTENDS, typeIndex=-1),
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor", type = CLASS_EXTENDS, typeIndex=-1),
})
public String extendsDefault1() {
return "class Test {}";
}
@TADescriptions({
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = CLASS_EXTENDS, typeIndex=-1),
@TADescription(annotation = "org/checkerframework/checker/initialization/qual/Initialized", type = CLASS_EXTENDS, typeIndex=-1),
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor", type = CLASS_EXTENDS, typeIndex=-1),
})
public String extendsDefault2() {
return "class Test extends Object {}";
}
@TADescriptions({
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = CLASS_EXTENDS, typeIndex=-1),
@TADescription(annotation = "org/checkerframework/checker/initialization/qual/Initialized", type = CLASS_EXTENDS, typeIndex=-1),
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor", type = CLASS_EXTENDS, typeIndex=-1),
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = CLASS_EXTENDS, typeIndex=0),
@TADescription(annotation = "org/checkerframework/checker/initialization/qual/Initialized", type = CLASS_EXTENDS, typeIndex=0),
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor", type = CLASS_EXTENDS, typeIndex=0),
})
public String extendsDefault3() {
return "class Test implements java.io.Serializable {}";
}
*/
@TADescriptions({
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/Nullable",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
})
public String typeParams1() {
return "class Test <T1> {}";
}
@TADescriptions({
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
})
public String typeParams2() {
return "class Test<T1 extends Object> {}";
}
@TADescriptions({
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 1),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 1),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 1),
})
public String typeParams3() {
return "class Test<T2 extends Comparable<T2>> {}";
}
@TADescriptions({
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER,
paramIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/Nullable",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 0,
boundIndex = 0),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER,
paramIndex = 1),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER,
paramIndex = 1),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER,
paramIndex = 1),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 1,
boundIndex = 1),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 1,
boundIndex = 1),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = CLASS_TYPE_PARAMETER_BOUND,
paramIndex = 1,
boundIndex = 1),
})
public String typeParams4() {
return "class Test<T1, T2 extends Comparable<T2>> {}";
}
}