blob: dcfa3fbb1905d7cf314e07bbaf30c0bf27d8058b [file] [log] [blame]
import org.checkerframework.checker.calledmethods.qual.*;
public class UnparsablePredicate {
// :: error: predicate
void unclosedOpen(@CalledMethodsPredicate("(foo && bar") Object x) {}
// :: error: predicate
void unopenedClose(@CalledMethodsPredicate("foo || bar)") Object x) {}
// :: error: predicate
void badKeywords1(@CalledMethodsPredicate("foo OR bar") Object x) {}
// :: error: predicate
void badKeywords2(@CalledMethodsPredicate("foo AND bar") Object x) {}
// These tests check that valid java identifiers don't cause problems
// when evaluating predicates. Examples of identifiers from
// https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.8
void jls0Example(@CalledMethodsPredicate("String") Object x) {}
void callJls0Example(@CalledMethods("String") Object y) {
jls0Example(y);
}
void jls1Example(@CalledMethodsPredicate("i3") Object x) {}
void callJls1Example(@CalledMethods("i3") Object y) {
jls1Example(y);
}
// TODO: support Unicode. SPEL, which we use to parse expressions, doesn't.
/* void jls2Example(@CalledMethodsPredicate("αρετη") Object x) { }
void callJls2Example(@CalledMethods("αρετη") Object y) {
jls2Example(y);
}*/
void jls3Example(@CalledMethodsPredicate("MAX_VALUE") Object x) {}
void callJls3Example(@CalledMethods("MAX_VALUE") Object y) {
jls3Example(y);
}
void jls4Example(@CalledMethodsPredicate("isLetterOrDigit") Object x) {}
void callJls4Example(@CalledMethods("isLetterOrDigit") Object y) {
jls4Example(y);
}
}