blob: 1b50e73b9c2ba2309eed6b8561bf9a80bcf90370 [file] [log] [blame]
package org.checkerframework.dataflow.livevariable;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.checkerframework.dataflow.analysis.AbstractValue;
import org.checkerframework.dataflow.cfg.node.Node;
import org.checkerframework.javacutil.BugInCF;
/** A live variable (which is represented by a node) wrapper turning node into abstract value. */
public class LiveVarValue implements AbstractValue<LiveVarValue> {
/**
* A live variable is represented by a node, which can be a {@link
* org.checkerframework.dataflow.cfg.node.LocalVariableNode} or {@link
* org.checkerframework.dataflow.cfg.node.FieldAccessNode}.
*/
protected final Node liveVariable;
@Override
public LiveVarValue leastUpperBound(LiveVarValue other) {
throw new BugInCF("lub of LiveVar get called!");
}
/**
* Create a new live variable.
*
* @param n a node
*/
public LiveVarValue(Node n) {
this.liveVariable = n;
}
@Override
public int hashCode() {
return this.liveVariable.hashCode();
}
@Override
public boolean equals(@Nullable Object obj) {
if (!(obj instanceof LiveVarValue)) {
return false;
}
LiveVarValue other = (LiveVarValue) obj;
return this.liveVariable.equals(other.liveVariable);
}
@Override
public String toString() {
return this.liveVariable.toString();
}
}