import testlib.wholeprograminference.qual.*;
// The @DefaultType annotation, which is the default for every location, is forbidden
// to be written anywhere. This class attempts to infer @DefaultType in several
// locations, and the annotated version of this class (in the annotated folder)
// should have no explicit @DefaultType annotations.
public class DefaultsTest {
String defaultField = "";
String defaultField2;
void test() {
@SuppressWarnings("") // To allow the use of the explicit @DefaultType.
@DefaultType String explicitDefault = "";
defaultField2 = explicitDefault;
}
// This method's return type should not be updated by the whole-program inference
// since it is the default.
String lubTest() {
if (Math.random() > 0.5) {
return ""; // @DefaultType
} else {
//:: warning: (cast.unsafe)
@WholeProgramInferenceBottom String s = (@WholeProgramInferenceBottom String) "";
return s;
}
}
}