diff --git a/tests/cases/compiler/strictFunctionTypes1.ts b/tests/cases/compiler/strictFunctionTypes1.ts index ad8836fcf0..411aab812d 100644 --- a/tests/cases/compiler/strictFunctionTypes1.ts +++ b/tests/cases/compiler/strictFunctionTypes1.ts @@ -27,3 +27,27 @@ const x11 = f3(never, fo, fx); // "def" declare function foo(a: ReadonlyArray): T; let x = foo([]); // never + +// Modified repros from #26127 + +interface A { a: string } +interface B extends A { b: string } + +declare function acceptUnion(x: A | number): void; +declare function acceptA(x: A): void; + +declare let a: A; +declare let b: B; +declare let never: never; + +declare function coAndContra(value: T, func: (t: T) => void): T; + +const t1: A = coAndContra(a, acceptUnion); +const t2: B = coAndContra(b, acceptA); +const t3: A = coAndContra(never, acceptA); + +declare function coAndContraArray(value: T[], func: (t: T) => void): T[]; + +const t4: A[] = coAndContraArray([a], acceptUnion); +const t5: B[] = coAndContraArray([b], acceptA); +const t6: A[] = coAndContraArray([], acceptA);