blob: b18c1150e0fec8b9dcdfaeb34a122ba94b3f8284 [file] [log] [blame]
package org.checkerframework.framework.type;
import java.util.Objects;
import org.checkerframework.checker.nullness.qual.Nullable;
/** Represents upper and lower bounds, each an AnnotatedTypeMirror. */
public class AnnotatedTypeParameterBounds {
private final AnnotatedTypeMirror upper;
private final AnnotatedTypeMirror lower;
public AnnotatedTypeParameterBounds(AnnotatedTypeMirror upper, AnnotatedTypeMirror lower) {
this.upper = upper;
this.lower = lower;
}
public AnnotatedTypeMirror getUpperBound() {
return upper;
}
public AnnotatedTypeMirror getLowerBound() {
return lower;
}
@Override
public String toString() {
return "[extends " + upper + " super " + lower + "]";
}
/**
* Return a possibly-verbose string representation of this.
*
* @param verbose if true, returned representation is verbose
* @return a possibly-verbose string representation of this
*/
public String toString(boolean verbose) {
return "[extends " + upper.toString(verbose) + " super " + lower.toString(verbose) + "]";
}
@Override
public int hashCode() {
return Objects.hash(upper, lower);
}
@Override
public boolean equals(@Nullable Object obj) {
if (!(obj instanceof AnnotatedTypeParameterBounds)) {
return false;
}
AnnotatedTypeParameterBounds other = (AnnotatedTypeParameterBounds) obj;
return this.upper == null
? other.upper == null
: this.upper.equals(other.upper) && this.lower == null
? other.lower == null
: this.lower.equals(other.lower);
}
}