| package org.checkerframework.framework.util.typeinference.constraint; |
| |
| import org.checkerframework.framework.type.AnnotatedTypeMirror; |
| import org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedTypeVariable; |
| |
| /** |
| * A constraint of the form: F 《 A or A 》 F |
| * |
| * @see org.checkerframework.framework.util.typeinference.constraint.AFConstraint |
| */ |
| public class F2A extends AFConstraint { |
| |
| /** Create a constraint with an argument greater than a formal. */ |
| public F2A(AnnotatedTypeMirror formalParameter, AnnotatedTypeMirror argument) { |
| super(argument, formalParameter); |
| } |
| |
| @Override |
| public TUConstraint toTUConstraint() { |
| return new TSubU((AnnotatedTypeVariable) formalParameter, argument, true); |
| } |
| |
| @Override |
| protected F2A construct(AnnotatedTypeMirror newArgument, AnnotatedTypeMirror newFormalParameter) { |
| return new F2A(newFormalParameter, newArgument); |
| } |
| |
| @Override |
| public String toString() { |
| return "F2A( " + formalParameter + " << " + argument + " )"; |
| } |
| } |