blob: 32fa09f18501534dd2342f76a43a790018405570 [file] [log] [blame]
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.checkerframework.checker.regex.qual.*;
import org.checkerframework.framework.type.AnnotatedTypeMirror;
public class InvariantTypes {
String[] sa = {"a"};
String[] sa2 = {"a", "b"};
public String[] sa3 = {"a", "b"};
public static String[] sa4 = {"a", "b"};
public final String[] sa5 = {"a", "b"};
public static final String[] sa6 = {"a", "b"};
final String[] sa7 = {"a", "b"};
// tested above: String[] sa = {"a"};
@Regex String[] rsa = {"a"};
String[] nrsa = {"(a"};
// :: error: (array.initializer) :: error: (assignment)
@Regex String[] rsaerr = {"(a"};
List<String> ls = Arrays.asList("alice", "bob", "carol");
List<@Regex String> lrs = Arrays.asList("alice", "bob", "carol");
List<String> lnrs = Arrays.asList("(alice", "bob", "carol");
// :: error: (assignment)
List<@Regex String> lrserr = Arrays.asList("(alice", "bob", "carol");
void unqm(String[] sa) {}
void rem(@Regex String[] rsa) {}
void recalls() {
unqm(new String[] {"a"});
// TODOINVARR:: error: (argument)
unqm(new @Regex String[] {"a"});
rem(new String[] {"a"});
rem(new @Regex String[] {"a"});
}
void unqcalls() {
unqm(new String[] {"a("});
// TODOINVARR:: error: (argument)
// :: error: (array.initializer)
unqm(new @Regex String[] {"a("});
// :: error: (argument)
rem(new String[] {"a("});
// :: error: (array.initializer)
rem(new @Regex String[] {"a("});
}
// method argument context
String[] retunqm(String[] sa) {
return sa;
}
@Regex String[] retrem(@Regex String[] rsa) {
return rsa;
}
@Regex String[] mixedm(String[] rsa) {
return null;
}
void retunqcalls() {
@Regex String[] re = mixedm(new String[] {"a("});
// TODOINVARR:: error: (argument)
String[] u = retunqm(new String[] {"a"});
// TODOINVARR:: error: (argument)
re = mixedm(new String[2]);
}
void lrem(List<@Regex String> p) {}
void lunqm(List<String> p) {}
void listcalls() {
lunqm(Arrays.asList("alice", "bob", "carol"));
lrem(Arrays.asList("alice", "bob", "carol"));
lunqm(Arrays.asList("(alice", "bob", "carol"));
// :: error: (argument)
lrem(Arrays.asList("(alice", "bob", "carol"));
}
class ReTests {
ReTests(List<@Regex String> p) {}
ReTests(List<String> p, int i) {}
}
void listctrs() {
new ReTests(Arrays.asList("alice", "bob", "carol"), 0);
new ReTests(Arrays.asList("alice", "bob", "carol"));
new ReTests(Arrays.asList("(alice", "bob", "carol"), 0);
// :: error: (argument)
new ReTests(Arrays.asList("(alice", "bob", "carol"));
}
<J> String join(final String delimiter, final Collection<J> objs) {
return delimiter;
}
String s1 = join(" ", Arrays.asList("1", "2", "3"));
String s2 = "xxx" + join(" ", Arrays.asList("1", "2", "3"));
<K extends AnnotatedTypeMirror, V extends AnnotatedTypeMirror> V mapGetHelper(
Map<K, V> mappings) {
return null;
}
Map<? extends AnnotatedTypeMirror, ? extends AnnotatedTypeMirror> mappings;
AnnotatedTypeMirror found = mapGetHelper(mappings);
class TV<T> {
List<List<T>> emptylist = Collections.emptyList();
}
}