blob: f8f42245bb6f5338a4be2efbefe6375b4ae8291f [file] [log] [blame]
/*
* @test
* @summary Test that defaulted types are stored in bytecode.
*
* @compile ../PersistUtil.java Driver.java ReferenceInfoUtil.java Fields.java
* @run main Driver Fields
* @ignore This fails for Java 11. See Issue 2816.
*/
import static com.sun.tools.classfile.TypeAnnotation.TargetType.FIELD;
public class Fields {
@TADescriptions({
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD),
})
public String fieldDefault() {
return "Object f = new Object();";
}
@TADescriptions({
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD),
})
public String fieldDefaultOneExplicit() {
return "@NonNull Object f = new Object();";
}
@TADescriptions({
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/Nullable",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD),
})
public String fieldWithDefaultQualifier() {
return "@DefaultQualifier(Nullable.class)" + System.lineSeparator() + " Object f;";
}
@TADescriptions({
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {0, 0}),
})
public String fieldArray1() {
return "String[] sa = new String[1];";
}
@TADescriptions({
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/Nullable",
type = FIELD,
genericLocation = {0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {0, 0, 0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {0, 0, 0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {0, 0, 0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {0, 0, 0, 0, 0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {0, 0, 0, 0, 0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {0, 0, 0, 0, 0, 0}),
})
public String fieldArray2() {
return "String[] @Nullable [][] saaa = new String[1][][];";
}
@TADescriptions({
// in front of the java.util.List
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD),
// in front of Object //TODO: NEXT ANNO CHANGE TO NULLABLE WHEN WE GET JDK WORKING WITH THIS
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {3, 0, 2, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {3, 0, 2, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {3, 0, 2, 0}),
// in front of the wildcard (?)
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {3, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {3, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {3, 0}),
})
public String wildcards1() {
return "java.util.List<? extends Object> f = new java.util.ArrayList<>();";
}
@TADescriptions({
// in front of the first java.util.List
@TADescription(annotation = "org/checkerframework/checker/nullness/qual/NonNull", type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD),
// in front of the wildcard (?)
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {3, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {3, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {3, 0}),
// in front of the second java.util.List
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {3, 0, 2, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {3, 0, 2, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {3, 0, 2, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {3, 0, 2, 0, 3, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {3, 0, 2, 0, 3, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {3, 0, 2, 0, 3, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/NonNull",
type = FIELD,
genericLocation = {3, 0, 2, 0, 3, 0, 0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/initialization/qual/Initialized",
type = FIELD,
genericLocation = {3, 0, 2, 0, 3, 0, 0, 0}),
@TADescription(
annotation = "org/checkerframework/checker/nullness/qual/UnknownKeyFor",
type = FIELD,
genericLocation = {3, 0, 2, 0, 3, 0, 0, 0}),
})
public String wildcards2() {
return "java.util.List<? extends java.util.List<String[]>> f = new java.util.ArrayList<>();";
}
}