blob: b1ee3775195965fb15564699d39975da5a8db4ba [file] [log] [blame]
package org.checkerframework.checker.lock;
import java.util.List;
import java.util.Set;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeMirror;
import org.checkerframework.common.basetype.BaseTypeChecker;
import org.checkerframework.framework.flow.CFAbstractAnalysis;
import org.checkerframework.framework.flow.CFStore;
import org.checkerframework.framework.flow.CFValue;
import org.checkerframework.javacutil.Pair;
/**
* The analysis class for the lock type system.
*
* <p>This class extends {@link CFAbstractAnalysis} so that {@link LockStore} is used rather than
* {@link CFStore}.
*/
public class LockAnalysis extends CFAbstractAnalysis<CFValue, LockStore, LockTransfer> {
public LockAnalysis(
BaseTypeChecker checker,
LockAnnotatedTypeFactory factory,
List<Pair<VariableElement, CFValue>> fieldValues) {
super(checker, factory, fieldValues);
}
@Override
public LockTransfer createTransferFunction() {
return new LockTransfer(this, (LockChecker) checker);
}
@Override
public LockStore createEmptyStore(boolean sequentialSemantics) {
return new LockStore(this, sequentialSemantics);
}
@Override
public LockStore createCopiedStore(LockStore s) {
return new LockStore(this, s);
}
@Override
public CFValue createAbstractValue(Set<AnnotationMirror> annotations, TypeMirror underlyingType) {
return defaultCreateAbstractValue(this, annotations, underlyingType);
}
}