| 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); |
| } |
| } |