diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5142d60851519..2fe106b1d5832 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14617,9 +14617,11 @@ namespace ts { const candidate = propagationType || source; // We make contravariant inferences only if we are in a pure contravariant position, // i.e. only if we have not descended into a bivariant position. - if (contravariant && !bivariant && !contains(inference.contraCandidates, candidate)) { - inference.contraCandidates = append(inference.contraCandidates, candidate); - inference.inferredType = undefined; + if (contravariant && !bivariant) { + if (!contains(inference.contraCandidates, candidate)) { + inference.contraCandidates = append(inference.contraCandidates, candidate); + inference.inferredType = undefined; + } } else if (!contains(inference.candidates, candidate)) { inference.candidates = append(inference.candidates, candidate);