blob: 47480a4c3dcc9a571c14e24df4c97cb63a6dcc6f [file] [log] [blame]
import java.util.LinkedList;
import java.util.List;
import org.checkerframework.framework.testchecker.util.Encrypted;
abstract class BasicFunctionality {
@Encrypted String encrypt(String s) {
byte[] b = s.getBytes();
for (int i = 0; i < b.length; b[i++]++) {}
// :: warning: (cast.unsafe)
return (@Encrypted String) new String(b);
}
abstract void sendOverTheInternet(@Encrypted String s);
void test() {
@Encrypted String s = encrypt("foo"); // valid
sendOverTheInternet(s); // valid
String t = encrypt("bar"); // valid (subtype)
sendOverTheInternet(t); // valid (flow)
List<@Encrypted String> lst = new LinkedList<>();
lst.add(s);
lst.add(t);
for (@Encrypted String str : lst) {
sendOverTheInternet(str);
}
// for (String str : lst)
// sendOverTheInternet(str); // should be valid!
}
}