import org.checkerframework.checker.i18n.qual.Localized;
class LocalizedMessage {
@Localized String localize(String s) {
throw new RuntimeException();
}
void localized(@Localized String s) {}
void any(String s) {}
void stringLiteral() {
//:: error: (argument.type.incompatible)
localized("ldskjfldj"); // error
any("lksjdflkjdf");
}
void stringRef(String ref) {
//:: error: (argument.type.incompatible)
localized(ref); // error
any(ref);
}
void localizedRef(@Localized String ref) {
localized(ref);
any(ref);
}
void methodRet(String ref) {
localized(localize(ref));
localized(localize(ref));
}
void concatenation(@Localized String s1, String s2) {
//:: error: (argument.type.incompatible)
localized(s1 + s1); // error
//:: error: (argument.type.incompatible) :: error: (compound.assignment.type.incompatible)
localized(s1 += s1); // error
//:: error: (argument.type.incompatible)
localized(s1 + "m"); // error
//:: error: (argument.type.incompatible)
localized(s1 + s2); // error
//:: error: (argument.type.incompatible)
localized(s2 + s1); // error
//:: error: (argument.type.incompatible)
localized(s2 + "m"); // error
//:: error: (argument.type.incompatible)
localized(s2 + s2); // error
any(s1 + s1);
any(s1 + "m");
any(s1 + s2);
any(s2 + s1);
any(s2 + "m");
any(s2 + s2);
}
}