| package annotator.find; |
| |
| import com.sun.source.util.TreePath; |
| import com.sun.source.tree.Tree; |
| |
| /** |
| * A criterion for locating a program element in an AST. A Criterion does |
| * not actually give a location. Given a location, the isSatisfiedBy |
| * method indicates whether that location is a desired one. |
| */ |
| public interface Criterion { |
| |
| /** |
| * Types of criterion. |
| */ |
| public static enum Kind { |
| IN_METHOD, |
| /* |
| * Used for classes, interfaces, enums, annotation types. |
| * What would be a better name? |
| * Also see Criteria.isClassEquiv |
| */ |
| IN_CLASS, |
| ENCLOSED_BY, |
| HAS_KIND, |
| NOT_IN_METHOD, |
| TYPE_PARAM, |
| GENERIC_ARRAY_LOCATION, |
| RECEIVER, |
| RETURN_TYPE, |
| SIG_METHOD, |
| PARAM, |
| CAST, |
| LOCAL_VARIABLE, |
| FIELD, |
| NEW, |
| INSTANCE_OF, |
| TYPE_ARGUMENT, |
| METHOD_CALL, |
| METHOD_REFERENCE, |
| LAMBDA_EXPRESSION, |
| BOUND_LOCATION, |
| EXTIMPLS_LOCATION, |
| INTERSECT_LOCATION, |
| METHOD_BOUND, |
| CLASS_BOUND, |
| IN_PACKAGE, |
| AST_PATH, |
| IN_STATIC_INIT, |
| IN_INSTANCE_INIT, |
| IN_FIELD_INIT, |
| /* |
| * This constant is never used. What is the difference to IN_CLASS? |
| * Is one for anywhere within a class and this one only for the |
| * class declaration itself? |
| */ |
| CLASS, |
| PACKAGE; |
| } |
| |
| /** |
| * Determines if the given tree path is satisfied by this criterion. |
| * |
| * @param path the tree path to check against |
| * @return true if this criterion is satisfied by the given path, |
| * false otherwise |
| */ |
| public boolean isSatisfiedBy(TreePath path, Tree tree); |
| |
| /** |
| * Determines if the given tree path is satisfied by this criterion. |
| * |
| * @param path the tree path to check against |
| * @return true if this criterion is satisfied by the given path, |
| * false otherwise |
| */ |
| public boolean isSatisfiedBy(TreePath path); |
| |
| /** |
| * Gets the type of this criterion. |
| * |
| * @return this criterion's kind |
| */ |
| public Kind getKind(); |
| |
| } |