package org.checkerframework.framework.util.typeinference.constraint; import java.util.Set; /** * AFReducer implementations reduce AFConstraints into one or more "simpler" AFConstraints until * these constraints are irreducible * * @see * org.checkerframework.framework.util.typeinference.constraint.AFConstraint#isIrreducible(java.util.Set) * <p>There is one AFReducer for each type of AFConstraint. */ public interface AFReducer { /** * Determines if the input constraint should be handled by this reducer. If so: Reduces the * constraint into one or more new constraints. Any new constraint that can still be reduced is * placed in newConstraints. New irreducible constraints are placed in finish. Return true * Return false (indicating that some other reducer needs to handle this constraint) If false is * returned, the reducer should NOT place any constraints in newConstraints or finished * * @param constraint the constraint to reduce * @param newConstraints the new constraints that may still need to be reduced * @return true if the input constraint was handled by this reducer, false otherwise */ public boolean reduce(AFConstraint constraint, Set<AFConstraint> newConstraints); }