blob: 246baba4757ae6f5d3de37ef49c19aac6e04ea25 [file] [log] [blame]
package annotator.find;
import annotator.scanner.CommonScanner;
import com.sun.source.tree.Tree;
import com.sun.source.util.TreePath;
/**
* Criterion for being within a specific field initializer.
*/
public class InFieldInitCriterion implements Criterion {
public final String varName;
public final Criterion varCriterion;
public InFieldInitCriterion(String varName) {
this.varName = varName;
this.varCriterion = Criteria.is(Tree.Kind.VARIABLE, varName);
}
/** {@inheritDoc} */
@Override
public boolean isSatisfiedBy(TreePath path, Tree leaf) {
assert path == null || path.getLeaf() == leaf;
return isSatisfiedBy(path);
}
/** {@inheritDoc} */
@Override
public boolean isSatisfiedBy(TreePath path) {
while (path != null) {
if (CommonScanner.isFieldInit(path)) {
return varCriterion.isSatisfiedBy(path);
}
path = path.getParentPath();
}
return false;
}
@Override
public Kind getKind() {
return Kind.IN_FIELD_INIT;
}
@Override
public String toString() {
return "In field initializer for field '" + varName + "'";
}
}