private boolean hasAlternate(JSType type, EquivalenceMethod eqMethod, EqCache eqCache) { for (JSType alternate : getAlternatesWithoutStructuralTyping()) { if (alternate.checkEquivalenceHelper(type, eqMethod, eqCache)) { return true; } } return false; }
/** * Two function types are equal if their signatures match. Since they don't have signatures, two * interfaces are equal if their names match. */ boolean checkFunctionEquivalenceHelper(FunctionType that, EquivalenceMethod eqMethod) { if (isConstructor()) { if (that.isConstructor()) { return this == that; } return false; } if (isInterface()) { if (that.isInterface()) { return getReferenceName().equals(that.getReferenceName()); } return false; } if (that.isInterface()) { return false; } return typeOfThis.checkEquivalenceHelper(that.typeOfThis, eqMethod) && call.checkArrowEquivalenceHelper(that.call, eqMethod); }