Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit19f513e

Browse files
committed
Add tests
1 parentad05931 commit19f513e

File tree

8 files changed

+118
-9
lines changed

8 files changed

+118
-9
lines changed

‎tests/baselines/reference/correctOrderOfPromiseMethod.js‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ async function countEverything(): Promise<number> {
1515
const[resultA,resultB]=awaitPromise.all([
1616
providerA(),
1717
providerB(),
18-
]asconst);
18+
]);
1919

2020
constdataA:A[]=resultA;
2121
constdataB:B[]=resultB;
@@ -24,6 +24,10 @@ async function countEverything(): Promise<number> {
2424
}
2525
return0;
2626
}
27+
28+
// #31179
29+
30+
constexpected:Promise<["a","b","c"]>=Promise.all(undefinedasreadonly["a","b","c"]);
2731

2832

2933
//// [correctOrderOfPromiseMethod.js]
@@ -92,3 +96,5 @@ function countEverything() {
9296
});
9397
});
9498
}
99+
// #31179
100+
varexpected=Promise.all(undefined);

‎tests/baselines/reference/correctOrderOfPromiseMethod.symbols‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async function countEverything(): Promise<number> {
4343
providerB(),
4444
>providerB : Symbol(providerB, Decl(correctOrderOfPromiseMethod.ts, 11, 9))
4545

46-
] as const);
46+
]);
4747

4848
const dataA: A[] = resultA;
4949
>dataA : Symbol(dataA, Decl(correctOrderOfPromiseMethod.ts, 18, 9))
@@ -70,3 +70,13 @@ async function countEverything(): Promise<number> {
7070
return 0;
7171
}
7272

73+
// #31179
74+
75+
const expected: Promise<["a", "b", "c"]> = Promise.all(undefined as readonly ["a", "b", "c"]);
76+
>expected : Symbol(expected, Decl(correctOrderOfPromiseMethod.ts, 28, 5))
77+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
78+
>Promise.all : Symbol(PromiseConstructor.all, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --) ... and 6 more)
79+
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
80+
>all : Symbol(PromiseConstructor.all, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --) ... and 6 more)
81+
>undefined : Symbol(undefined)
82+

‎tests/baselines/reference/correctOrderOfPromiseMethod.types‎

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,12 @@ async function countEverything(): Promise<number> {
2828
const [resultA, resultB] = await Promise.all([
2929
>resultA : A[]
3030
>resultB : B[]
31-
>await Promise.all([ providerA(), providerB(), ] as const) : [A[], B[]]
32-
>Promise.all([ providerA(), providerB(), ] as const) : Promise<[A[], B[]]>
31+
>await Promise.all([ providerA(), providerB(), ]) : [A[], B[]]
32+
>Promise.all([ providerA(), providerB(), ]) : Promise<[A[], B[]]>
3333
>Promise.all : { <TAll>(values: Iterable<TAll | PromiseLike<TAll>>): Promise<TAll[]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; <T1, T2, T3, T4, T5, T6, T7, T8>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; <T1, T2, T3, T4, T5, T6, T7>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; <T1, T2, T3, T4, T5, T6>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>]): Promise<[T1, T2, T3, T4, T5, T6]>; <T1, T2, T3, T4, T5>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>]): Promise<[T1, T2, T3, T4, T5]>; <T1, T2, T3, T4>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>]): Promise<[T1, T2, T3, T4]>; <T1, T2, T3>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<[T1, T2, T3]>; <T1, T2>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>; <T>(values: readonly (T | PromiseLike<T>)[]): Promise<T[]>; }
3434
>Promise : PromiseConstructor
3535
>all : { <TAll>(values: Iterable<TAll | PromiseLike<TAll>>): Promise<TAll[]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; <T1, T2, T3, T4, T5, T6, T7, T8>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; <T1, T2, T3, T4, T5, T6, T7>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; <T1, T2, T3, T4, T5, T6>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>]): Promise<[T1, T2, T3, T4, T5, T6]>; <T1, T2, T3, T4, T5>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>]): Promise<[T1, T2, T3, T4, T5]>; <T1, T2, T3, T4>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>]): Promise<[T1, T2, T3, T4]>; <T1, T2, T3>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<[T1, T2, T3]>; <T1, T2>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>; <T>(values: readonly (T | PromiseLike<T>)[]): Promise<T[]>; }
36-
>[ providerA(), providerB(), ] as const : readonly [Promise<A[]>, Promise<B[]>]
37-
>[ providerA(), providerB(), ] : readonly [Promise<A[]>, Promise<B[]>]
36+
>[ providerA(), providerB(), ] : [Promise<A[]>, Promise<B[]>]
3837

3938
providerA(),
4039
>providerA() : Promise<A[]>
@@ -44,7 +43,7 @@ async function countEverything(): Promise<number> {
4443
>providerB() : Promise<B[]>
4544
>providerB : () => Promise<B[]>
4645

47-
] as const);
46+
]);
4847

4948
const dataA: A[] = resultA;
5049
>dataA : A[]
@@ -72,3 +71,14 @@ async function countEverything(): Promise<number> {
7271
>0 : 0
7372
}
7473

74+
// #31179
75+
76+
const expected: Promise<["a", "b", "c"]> = Promise.all(undefined as readonly ["a", "b", "c"]);
77+
>expected : Promise<["a", "b", "c"]>
78+
>Promise.all(undefined as readonly ["a", "b", "c"]) : Promise<["a", "b", "c"]>
79+
>Promise.all : { <TAll>(values: Iterable<TAll | PromiseLike<TAll>>): Promise<TAll[]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; <T1, T2, T3, T4, T5, T6, T7, T8>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; <T1, T2, T3, T4, T5, T6, T7>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; <T1, T2, T3, T4, T5, T6>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>]): Promise<[T1, T2, T3, T4, T5, T6]>; <T1, T2, T3, T4, T5>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>]): Promise<[T1, T2, T3, T4, T5]>; <T1, T2, T3, T4>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>]): Promise<[T1, T2, T3, T4]>; <T1, T2, T3>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<[T1, T2, T3]>; <T1, T2>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>; <T>(values: readonly (T | PromiseLike<T>)[]): Promise<T[]>; }
80+
>Promise : PromiseConstructor
81+
>all : { <TAll>(values: Iterable<TAll | PromiseLike<TAll>>): Promise<TAll[]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; <T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; <T1, T2, T3, T4, T5, T6, T7, T8>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; <T1, T2, T3, T4, T5, T6, T7>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; <T1, T2, T3, T4, T5, T6>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>]): Promise<[T1, T2, T3, T4, T5, T6]>; <T1, T2, T3, T4, T5>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>]): Promise<[T1, T2, T3, T4, T5]>; <T1, T2, T3, T4>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>]): Promise<[T1, T2, T3, T4]>; <T1, T2, T3>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<[T1, T2, T3]>; <T1, T2>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>; <T>(values: readonly (T | PromiseLike<T>)[]): Promise<T[]>; }
82+
>undefined as readonly ["a", "b", "c"] : readonly ["a", "b", "c"]
83+
>undefined : undefined
84+

‎tests/baselines/reference/typeInferenceWithTupleType.js‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ var zipResult = zip(["foo", "bar"], [5, 6]);
2323
varzipResultEle=zipResult[0];// [string, number]
2424
varzipResultEleEle=zipResult[0][0];// string
2525

26+
// #33559 and #33752
27+
28+
declarefunctionf1<T1,T2>(values:[T1[],T2[]]):T1;
29+
declarefunctionf2<T1,T2>(values:readonly[T1[],T2[]]):T1;
30+
31+
letexpected:"a";
32+
expected=f1(undefinedas["a"[],"b"[]]);
33+
expected=f2(undefinedas["a"[],"b"[]]);
2634

2735

2836
//// [typeInferenceWithTupleType.js]
@@ -46,3 +54,6 @@ function zip(array1, array2) {
4654
varzipResult=zip(["foo","bar"],[5,6]);
4755
varzipResultEle=zipResult[0];// [string, number]
4856
varzipResultEleEle=zipResult[0][0];// string
57+
varexpected;
58+
expected=f1(undefined);
59+
expected=f2(undefined);

‎tests/baselines/reference/typeInferenceWithTupleType.symbols‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,36 @@ var zipResultEleEle = zipResult[0][0]; // string
9797
>0 : Symbol(0)
9898
>0 : Symbol(0)
9999

100+
// #33559 and #33752
101+
102+
declare function f1<T1, T2>(values: [T1[], T2[]]): T1;
103+
>f1 : Symbol(f1, Decl(typeInferenceWithTupleType.ts, 22, 38))
104+
>T1 : Symbol(T1, Decl(typeInferenceWithTupleType.ts, 26, 20))
105+
>T2 : Symbol(T2, Decl(typeInferenceWithTupleType.ts, 26, 23))
106+
>values : Symbol(values, Decl(typeInferenceWithTupleType.ts, 26, 28))
107+
>T1 : Symbol(T1, Decl(typeInferenceWithTupleType.ts, 26, 20))
108+
>T2 : Symbol(T2, Decl(typeInferenceWithTupleType.ts, 26, 23))
109+
>T1 : Symbol(T1, Decl(typeInferenceWithTupleType.ts, 26, 20))
110+
111+
declare function f2<T1, T2>(values: readonly [T1[], T2[]]): T1;
112+
>f2 : Symbol(f2, Decl(typeInferenceWithTupleType.ts, 26, 54))
113+
>T1 : Symbol(T1, Decl(typeInferenceWithTupleType.ts, 27, 20))
114+
>T2 : Symbol(T2, Decl(typeInferenceWithTupleType.ts, 27, 23))
115+
>values : Symbol(values, Decl(typeInferenceWithTupleType.ts, 27, 28))
116+
>T1 : Symbol(T1, Decl(typeInferenceWithTupleType.ts, 27, 20))
117+
>T2 : Symbol(T2, Decl(typeInferenceWithTupleType.ts, 27, 23))
118+
>T1 : Symbol(T1, Decl(typeInferenceWithTupleType.ts, 27, 20))
119+
120+
let expected: "a";
121+
>expected : Symbol(expected, Decl(typeInferenceWithTupleType.ts, 29, 3))
122+
123+
expected = f1(undefined as ["a"[], "b"[]]);
124+
>expected : Symbol(expected, Decl(typeInferenceWithTupleType.ts, 29, 3))
125+
>f1 : Symbol(f1, Decl(typeInferenceWithTupleType.ts, 22, 38))
126+
>undefined : Symbol(undefined)
127+
128+
expected = f2(undefined as ["a"[], "b"[]]);
129+
>expected : Symbol(expected, Decl(typeInferenceWithTupleType.ts, 29, 3))
130+
>f2 : Symbol(f2, Decl(typeInferenceWithTupleType.ts, 26, 54))
131+
>undefined : Symbol(undefined)
100132

‎tests/baselines/reference/typeInferenceWithTupleType.types‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,32 @@ var zipResultEleEle = zipResult[0][0]; // string
109109
>0 : 0
110110
>0 : 0
111111

112+
// #33559 and #33752
113+
114+
declare function f1<T1, T2>(values: [T1[], T2[]]): T1;
115+
>f1 : <T1, T2>(values: [T1[], T2[]]) => T1
116+
>values : [T1[], T2[]]
117+
118+
declare function f2<T1, T2>(values: readonly [T1[], T2[]]): T1;
119+
>f2 : <T1, T2>(values: readonly [T1[], T2[]]) => T1
120+
>values : readonly [T1[], T2[]]
121+
122+
let expected: "a";
123+
>expected : "a"
124+
125+
expected = f1(undefined as ["a"[], "b"[]]);
126+
>expected = f1(undefined as ["a"[], "b"[]]) : "a"
127+
>expected : "a"
128+
>f1(undefined as ["a"[], "b"[]]) : "a"
129+
>f1 : <T1, T2>(values: [T1[], T2[]]) => T1
130+
>undefined as ["a"[], "b"[]] : ["a"[], "b"[]]
131+
>undefined : undefined
132+
133+
expected = f2(undefined as ["a"[], "b"[]]);
134+
>expected = f2(undefined as ["a"[], "b"[]]) : "a"
135+
>expected : "a"
136+
>f2(undefined as ["a"[], "b"[]]) : "a"
137+
>f2 : <T1, T2>(values: readonly [T1[], T2[]]) => T1
138+
>undefined as ["a"[], "b"[]] : ["a"[], "b"[]]
139+
>undefined : undefined
112140

‎tests/cases/compiler/correctOrderOfPromiseMethod.ts‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ async function countEverything(): Promise<number> {
1717
const[resultA,resultB]=awaitPromise.all([
1818
providerA(),
1919
providerB(),
20-
]asconst);
20+
]);
2121

2222
constdataA:A[]=resultA;
2323
constdataB:B[]=resultB;
@@ -26,3 +26,7 @@ async function countEverything(): Promise<number> {
2626
}
2727
return0;
2828
}
29+
30+
// #31179
31+
32+
constexpected:Promise<["a","b","c"]>=Promise.all(undefinedasreadonly["a","b","c"]);

‎tests/cases/conformance/types/tuple/typeInferenceWithTupleType.ts‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
functioncombine<T,U>(x:T,y:U):[T,U]{
1+
functioncombine<T,U>(x:T,y:U):[T,U]{
22
return[x,y];
33
}
44

@@ -22,3 +22,11 @@ var zipResult = zip(["foo", "bar"], [5, 6]);
2222
varzipResultEle=zipResult[0];// [string, number]
2323
varzipResultEleEle=zipResult[0][0];// string
2424

25+
// #33559 and #33752
26+
27+
declarefunctionf1<T1,T2>(values:[T1[],T2[]]):T1;
28+
declarefunctionf2<T1,T2>(values:readonly[T1[],T2[]]):T1;
29+
30+
letexpected:"a";
31+
expected=f1(undefinedas["a"[],"b"[]]);
32+
expected=f2(undefinedas["a"[],"b"[]]);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp