package checkers.oigj;
import javax.lang.model.element.Element;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.ExpressionTree;
import checkers.basetype.BaseTypeVisitor;
import checkers.oigj.quals.Dominator;
import checkers.types.AnnotatedTypeMirror;
import checkers.util.TreeUtils;
public class OwnershipVisitor extends BaseTypeVisitor<Void, Void> {
public OwnershipVisitor(OwnershipSubchecker checker, CompilationUnitTree root) {
super(checker, root);
}
@Override
protected boolean isAccessAllowed(Element field,
AnnotatedTypeMirror receiver, ExpressionTree accessTree) {
AnnotatedTypeMirror fType = atypeFactory.getAnnotatedType(field);
if (fType.hasAnnotation(Dominator.class)
&& !TreeUtils.isSelfAccess(accessTree))
return false;
return super.isAccessAllowed(field, receiver, accessTree);
}
}