// Test case for Issue 1315
// https://github.com/typetools/checker-framework/issues/1315

import org.checkerframework.checker.nullness.qual.Nullable;

public class Issue1315 {
  static class Box<T> {
    T f;

    Box(T p) {
      f = p;
    }

    @SuppressWarnings("unchecked")
    T test1(@Nullable Object p) {
      // :: warning: (cast.unsafe)
      return (T) p;
    }
    // The Nullness Checker should not issue a cast.unsafe warning,
    // but the KeyFor Checker does, so suppress that warning.
    @SuppressWarnings({"unchecked", "keyfor:cast.unsafe"})
    T test2(Object p) {
      return (T) p;
    }
  }

  static class Casts {
    public static void test() {
      Box<String> bs = new Box<>("");
      bs.f = bs.test1(null);
      // :: error: (argument)
      bs.f = bs.test2(null);
      bs.f.toString();
    }
  }
}
