blob: e8cb7e47ce5fedbb40939c30ae051a88f5b5fafd [file] [log] [blame]
import org.checkerframework.checker.nullness.qual.Nullable;
@SuppressWarnings("initialization.field.uninitialized")
public class ScopingConstruct {
// TODO: add nested classes within these two?
static class StaticNested implements AutoCloseable {
public void close() {}
static class NestedNested implements AutoCloseable {
public void close() {}
}
class NestedInner implements AutoCloseable {
public void close() {}
}
}
class Inner implements AutoCloseable {
public void close() {}
// This is a Java error.
// static class InnerNested {}
class InnerInner implements AutoCloseable {
public void close() {}
}
}
StaticNested sn;
@Nullable StaticNested nsn;
Inner i;
@Nullable Inner ni;
ScopingConstruct.StaticNested scsn;
// This is a Java error.
// @Nullable ScopingConstruct.StaticNested nscsn;
ScopingConstruct.@Nullable StaticNested scnsn;
// This is a Java error.
// ScopingConstruct.@Nullable StaticNested.NestedNested scnsnnn;
// This is a Java error.
// ScopingConstruct.@Nullable StaticNested.@Nullable NestedNested scnsnnnn;
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable StaticNested.NestedInner scnsnni;
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable StaticNested.@Nullable NestedInner scnsnnni;
ScopingConstruct.Inner sci;
ScopingConstruct.Inner.InnerInner sciii;
ScopingConstruct.Inner.@Nullable InnerInner scinii;
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner nsci;
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.InnerInner nsciii;
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.@Nullable InnerInner nscinii;
ScopingConstruct.@Nullable Inner scni;
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.InnerInner scniii;
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.@Nullable InnerInner scninii;
ScopingConstruct.StaticNested.NestedInner scsnni;
ScopingConstruct.StaticNested.@Nullable NestedInner scsnnni;
// This is a Java error.
// @Nullable ScopingConstruct.StaticNested.NestedInner nscsnni;
// This is a Java error.
// @Nullable ScopingConstruct.StaticNested.@Nullable NestedInner nscsnnni;
// This is a Java error.
// @Nullable ScopingConstruct.@Nullable StaticNested.NestedInner nscnsnni;
// This is a Java error.
// @Nullable ScopingConstruct.@Nullable StaticNested.@Nullable NestedInner nscnsnnni;
ScopingConstruct.Inner @Nullable [] scina;
ScopingConstruct.Inner.InnerInner @Nullable [] sciiina;
ScopingConstruct.Inner.@Nullable InnerInner @Nullable [] sciniina;
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner @Nullable [] nscina;
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.InnerInner @Nullable [] nsciiina;
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.@Nullable InnerInner @Nullable [] nsciniina;
ScopingConstruct.@Nullable Inner @Nullable [] scnina;
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.InnerInner @Nullable [] scniina;
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.@Nullable InnerInner @Nullable [] scniniina;
ScopingConstruct.Inner sci() {
throw new Error("not implemented");
}
ScopingConstruct.Inner.InnerInner sciii() {
throw new Error("not implemented");
}
ScopingConstruct.Inner.@Nullable InnerInner scinii() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner nsci() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.InnerInner nsciii() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.@Nullable InnerInner nscinii() {
throw new Error("not implemented");
}
ScopingConstruct.@Nullable Inner scni() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.InnerInner scniii() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.@Nullable InnerInner scninii() {
throw new Error("not implemented");
}
ScopingConstruct.Inner @Nullable [] scin() {
throw new Error("not implemented");
}
ScopingConstruct.Inner.InnerInner @Nullable [] sciiin() {
throw new Error("not implemented");
}
ScopingConstruct.Inner.@Nullable InnerInner @Nullable [] sciniin() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner @Nullable [] nscin() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.InnerInner @Nullable [] nsciiin() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.@Nullable InnerInner @Nullable [] nsciniin() {
throw new Error("not implemented");
}
ScopingConstruct.@Nullable Inner @Nullable [] scnin() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.InnerInner @Nullable [] scniiin() {
throw new Error("not implemented");
}
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.@Nullable InnerInner @Nullable [] scniniin() {
throw new Error("not implemented");
}
///
/// Formal parameters
///
void fsn(StaticNested sn) {}
void fnsn(@Nullable StaticNested nsn) {}
void fi(Inner i) {}
void fni(@Nullable Inner ni) {}
void fscsn(ScopingConstruct.StaticNested scsn) {}
void fscnsn(ScopingConstruct.@Nullable StaticNested scnsn) {}
// :: error: (nullness.on.outer)
void fscnsnni(ScopingConstruct.@Nullable StaticNested.NestedInner scnsnni) {}
// :: error: (nullness.on.outer)
void fscnsnnni(ScopingConstruct.@Nullable StaticNested.@Nullable NestedInner scnsnnni) {}
void fsci(ScopingConstruct.Inner sci) {}
void fsciii(ScopingConstruct.Inner.InnerInner sciii) {}
void fscinii(ScopingConstruct.Inner.@Nullable InnerInner scinii) {}
// :: error: (nullness.on.outer)
void fnsci(@Nullable ScopingConstruct.Inner nsci) {}
// :: error: (nullness.on.outer)
void fnsciii(@Nullable ScopingConstruct.Inner.InnerInner nsciii) {}
// :: error: (nullness.on.outer)
void fnscinii(@Nullable ScopingConstruct.Inner.@Nullable InnerInner nscinii) {}
void fscni(ScopingConstruct.@Nullable Inner scni) {}
// :: error: (nullness.on.outer)
void fscniii(ScopingConstruct.@Nullable Inner.InnerInner scniii) {}
// :: error: (nullness.on.outer)
void fscninii(ScopingConstruct.@Nullable Inner.@Nullable InnerInner scninii) {}
void fscsnni(ScopingConstruct.StaticNested.NestedInner scsnni) {}
void fscsnnni(ScopingConstruct.StaticNested.@Nullable NestedInner scsnnni) {}
///
/// Local variables
///
void lvsn() {
StaticNested sn;
}
void lvnsn() {
@Nullable StaticNested nsn;
}
void lvi() {
Inner i;
}
void lvni() {
@Nullable Inner ni;
}
void lvscsn() {
ScopingConstruct.StaticNested scsn;
}
void lvscnsn() {
ScopingConstruct.@Nullable StaticNested scnsn;
}
void lvscnsnni() {
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable StaticNested.NestedInner scnsnni;
}
void lvscnsnnni() {
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable StaticNested.@Nullable NestedInner scnsnnni;
}
void lvsci() {
ScopingConstruct.Inner sci;
}
void lvsciii() {
ScopingConstruct.Inner.InnerInner sciii;
}
void lvscinii() {
ScopingConstruct.Inner.@Nullable InnerInner scinii;
}
void lvnsci() {
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner nsci;
}
void lvnsciii() {
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.InnerInner nsciii;
}
void lvnscinii() {
// :: error: (nullness.on.outer)
@Nullable ScopingConstruct.Inner.@Nullable InnerInner nscinii;
}
void lvscni() {
ScopingConstruct.@Nullable Inner scni;
}
void lvscniii() {
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.InnerInner scniii;
}
void lvscninii() {
// :: error: (nullness.on.outer)
ScopingConstruct.@Nullable Inner.@Nullable InnerInner scninii;
}
void lvscsnni() {
ScopingConstruct.StaticNested.NestedInner scsnni;
}
void lvscsnnni() {
ScopingConstruct.StaticNested.@Nullable NestedInner scsnnni;
}
///
/// Resource variables
///
void rvsn() {
try (StaticNested sn = null) {}
}
void rvnsn() {
try (@Nullable StaticNested nsn = null) {}
}
void rvi() {
try (Inner i = null) {}
}
void rvni() {
try (@Nullable Inner ni = null) {}
}
void rvscsn() {
try (ScopingConstruct.StaticNested scsn = null) {}
}
void rvscnsn() {
try (ScopingConstruct.@Nullable StaticNested scnsn = null) {}
}
void rvscnsnni() {
// :: error: (nullness.on.outer)
try (ScopingConstruct.@Nullable StaticNested.NestedInner scnsnni = null) {}
}
void rvscnsnnni() {
// :: error: (nullness.on.outer)
try (ScopingConstruct.@Nullable StaticNested.@Nullable NestedInner scnsnnni = null) {}
}
void rvsci() {
try (ScopingConstruct.Inner sci = null) {}
}
void rvsciii() {
try (ScopingConstruct.Inner.InnerInner sciii = null) {}
}
void rvscinii() {
try (ScopingConstruct.Inner.@Nullable InnerInner scinii = null) {}
}
void rvnsci() {
// :: error: (nullness.on.outer)
try (@Nullable ScopingConstruct.Inner nsci = null) {}
}
void rvnsciii() {
// :: error: (nullness.on.outer)
try (@Nullable ScopingConstruct.Inner.InnerInner nsciii = null) {}
}
void rvnscinii() {
// :: error: (nullness.on.outer)
try (@Nullable ScopingConstruct.Inner.@Nullable InnerInner nscinii = null) {}
}
void rvscni() {
try (ScopingConstruct.@Nullable Inner scni = null) {}
}
void rvscniii() {
// :: error: (nullness.on.outer)
try (ScopingConstruct.@Nullable Inner.InnerInner scniii = null) {}
}
void rvscninii() {
// :: error: (nullness.on.outer)
try (ScopingConstruct.@Nullable Inner.@Nullable InnerInner scninii = null) {}
}
void rvscsnni() {
try (ScopingConstruct.StaticNested.NestedInner scsnni = null) {}
}
void rvscsnnni() {
try (ScopingConstruct.StaticNested.@Nullable NestedInner scsnnni = null) {}
}
///
/// For variables
///
void fvsn() {
for (StaticNested sn = null; ; ) {}
}
void fvnsn() {
for (@Nullable StaticNested nsn = null; ; ) {}
}
void fvi() {
for (Inner i = null; ; ) {}
}
void fvni() {
for (@Nullable Inner ni = null; ; ) {}
}
void fvscsn() {
for (ScopingConstruct.StaticNested scsn = null; ; ) {}
}
void fvscnsn() {
for (ScopingConstruct.@Nullable StaticNested scnsn = null; ; ) {}
}
void fvscnsnni() {
// :: error: (nullness.on.outer)
for (ScopingConstruct.@Nullable StaticNested.NestedInner scnsnni = null; ; ) {}
}
void fvscnsnnni() {
// :: error: (nullness.on.outer)
for (ScopingConstruct.@Nullable StaticNested.@Nullable NestedInner scnsnnni = null; ; ) {}
}
void fvsci() {
for (ScopingConstruct.Inner sci = null; ; ) {}
}
void fvsciii() {
for (ScopingConstruct.Inner.InnerInner sciii = null; ; ) {}
}
void fvscinii() {
for (ScopingConstruct.Inner.@Nullable InnerInner scinii = null; ; ) {}
}
void fvnsci() {
// :: error: (nullness.on.outer)
for (@Nullable ScopingConstruct.Inner nsci = null; ; ) {}
}
void fvnsciii() {
// :: error: (nullness.on.outer)
for (@Nullable ScopingConstruct.Inner.InnerInner nsciii = null; ; ) {}
}
void fvnscinii() {
// :: error: (nullness.on.outer)
for (@Nullable ScopingConstruct.Inner.@Nullable InnerInner nscinii = null; ; ) {}
}
void fvscni() {
for (ScopingConstruct.@Nullable Inner scni = null; ; ) {}
}
void fvscniii() {
// :: error: (nullness.on.outer)
for (ScopingConstruct.@Nullable Inner.InnerInner scniii = null; ; ) {}
}
void fvscninii() {
// :: error: (nullness.on.outer)
for (ScopingConstruct.@Nullable Inner.@Nullable InnerInner scninii = null; ; ) {}
}
void fvscsnni() {
for (ScopingConstruct.StaticNested.NestedInner scsnni = null; ; ) {}
}
void fvscsnnni() {
for (ScopingConstruct.StaticNested.@Nullable NestedInner scsnnni = null; ; ) {}
}
}