blob: 1c72710957fd8211eae586d45abbbb9a729e3f7e [file] [log] [blame]
import com.google.auto.value.AutoValue;
import org.checkerframework.checker.calledmethods.qual.*;
import org.checkerframework.checker.nullness.qual.*;
/**
* Adapted from the standard AutoValue example code:
* https://github.com/google/auto/blob/master/value/userguide/builders.md
*/
@AutoValue
abstract class AnimalNoSet {
abstract String name();
abstract @Nullable String habitat();
abstract int numberOfLegs();
public String getStr() {
return "str";
}
static Builder builder() {
return new AutoValue_AnimalNoSet.Builder();
}
@AutoValue.Builder
abstract static class Builder {
abstract Builder name(String value);
abstract Builder numberOfLegs(int value);
abstract Builder habitat(String value);
abstract AnimalNoSet build();
}
public static void buildSomethingWrong() {
Builder b = builder();
b.name("Frank");
// :: error: finalizer.invocation
b.build();
}
public static void buildSomethingRight() {
Builder b = builder();
b.name("Frank");
b.numberOfLegs(4);
b.build();
}
public static void buildSomethingRightIncludeOptional() {
Builder b = builder();
b.name("Frank");
b.numberOfLegs(4);
b.habitat("jungle");
b.build();
}
public static void buildSomethingWrongFluent() {
// :: error: finalizer.invocation
builder().name("Frank").build();
}
public static void buildSomethingRightFluent() {
builder().name("Jim").numberOfLegs(7).build();
}
}