| package org.checkerframework.dataflow.analysis; |
| |
| /** An abstract value used in the org.checkerframework.dataflow analysis. */ |
| public interface AbstractValue<V extends AbstractValue<V>> { |
| |
| /** |
| * Compute the least upper bound of two values. |
| * |
| * <p><em>Important</em>: This method must fulfill the following contract: |
| * |
| * <ul> |
| * <li>Does not change {@code this}. |
| * <li>Does not change {@code other}. |
| * <li>Returns a fresh object which is not aliased yet. |
| * <li>Returns an object of the same (dynamic) type as {@code this}, even if the signature is |
| * more permissive. |
| * <li>Is commutative. |
| * </ul> |
| */ |
| V leastUpperBound(V other); |
| } |