1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
// Test case for issue 266: https://github.com/typetools/checker-framework/issues/266
// The problem is limited refinement of final variables.
import org.checkerframework.checker.nullness.qual.*;
class FinalVar2 {
static Object method1(@Nullable Object arg) {
final Object tmp = arg;
if (tmp == null) {
return "hello";
}
return new Object() {
public void useFinalVar() {
// should be OK
tmp.hashCode();
}
};
}
static Object method2(final @Nullable Object arg) {
if (arg == null) {
return "hello";
}
return new Object() {
public void useFinalVar() {
// should be OK
arg.hashCode();
}
};
}
static Object method3(@Nullable Object arg) {
final Object tmp = arg;
Object result =
new Object() {
public void useFinalVar() {
// :: error: (dereference.of.nullable)
tmp.hashCode();
}
};
if (tmp == null) {
return "hello";
}
return result;
}
}
|