import org.checkerframework.checker.signedness.qual.Signed;
import org.checkerframework.checker.signedness.qual.Unsigned;

public class WideningConversion {

  char c1;
  char c2;
  int i1;
  int i2;
  @Signed int si1;
  @Signed int si2;
  @Unsigned int ui1;
  @Unsigned int ui2;

  void compare() {
    boolean b;
    b = c1 > c2;
    b = c1 > i2;
    b = i1 > c2;
    b = i1 > i2;
  }

  void plus() {
    // Not just "int si" because it's defaulted to TOP so every assignment would work.
    @Signed int si;
    si = c1 + c2;
    si = c1 + i2;
    si = i1 + c2;
    si = i1 + i2;

    si = c1 + c2;
    si = c1 + si2;
    si = si1 + c2;
    si = si1 + si2;

    si = c1 + c2;
    // :: error: (assignment)
    si = c1 + ui2;
    // :: error: (assignment)
    si = ui1 + c2;
    // :: error: (assignment)
    si = ui1 + ui2;

    @Unsigned int ui;
    ui = c1 + c2;
    // :: error: (assignment)
    ui = c1 + i2;
    // :: error: (assignment)
    ui = i1 + c2;
    // :: error: (assignment)
    ui = i1 + i2;

    ui = c1 + c2;
    // :: error: (assignment)
    ui = c1 + si2;
    // :: error: (assignment)
    ui = si1 + c2;
    // :: error: (assignment)
    ui = si1 + si2;

    ui = c1 + c2;
    ui = c1 + ui2;
    ui = ui1 + c2;
    ui = ui1 + ui2;

    // All of these are illegal in Java, without an explicit cast.
    // char c;
    // c = c1 + c2;
    // c = c1 + i2;
    // c = i1 + c2;
    // c = i1 + i2;

    char c;
    c = (char) (c1 + c2);
    // :: warning: (cast.unsafe)
    c = (char) (c1 + i2);
    // :: warning: (cast.unsafe)
    c = (char) (i1 + c2);
    // :: warning: (cast.unsafe)
    c = (char) (i1 + i2);

    c = (char) (c1 + c2);
    // :: warning: (cast.unsafe)
    c = (char) (c1 + si2);
    // :: warning: (cast.unsafe)
    c = (char) (si1 + c2);
    // :: warning: (cast.unsafe)
    c = (char) (si1 + si2);

    c = (char) (c1 + c2);
    c = (char) (c1 + ui2);
    c = (char) (ui1 + c2);
    c = (char) (ui1 + ui2);
  }
}
