Skip to content

Commit 633bfc3

Browse files
committed
Add tests
1 parent 3941375 commit 633bfc3

File tree

4 files changed

+93
-3
lines changed

4 files changed

+93
-3
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
assignmentToAnyArrayRestParameters.ts(15,25): error TS2339: Property '0.0' does not exist on type 'string[]'.
2+
assignmentToAnyArrayRestParameters.ts(18,16): error TS2536: Type '"0.0"' cannot be used to index type 'T'.
3+
4+
5+
==== assignmentToAnyArrayRestParameters.ts (2 errors) ====
6+
// Repros from #57122
7+
8+
function foo<T extends string[]>(
9+
fa: (s: string, ...args: string[]) => string,
10+
fb: (s: string, ...args: T) => string
11+
) {
12+
const f1: (...args: any) => string = fa;
13+
const f2: (...args: any[]) => string = fa;
14+
const f3: (...args: any) => string = fb;
15+
const f4: (...args: any[]) => string = fb;
16+
}
17+
18+
function bar<T extends string[], K extends number>() {
19+
type T00 = string[]["0"];
20+
type T01 = string[]["0.0"]; // Error
21+
~~~~~
22+
!!! error TS2339: Property '0.0' does not exist on type 'string[]'.
23+
type T02 = string[][K | "0"];
24+
type T10 = T["0"];
25+
type T11 = T["0.0"]; // Error
26+
~~~~~~~~
27+
!!! error TS2536: Type '"0.0"' cannot be used to index type 'T'.
28+
type T12 = T[K | "0"];
29+
}
30+

tests/baselines/reference/assignmentToAnyArrayRestParameters.symbols

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//// [tests/cases/compiler/assignmentToAnyArrayRestParameters.ts] ////
22

33
=== assignmentToAnyArrayRestParameters.ts ===
4-
// Repro from #57122
4+
// Repros from #57122
55

66
function foo<T extends string[]>(
77
>foo : Symbol(foo, Decl(assignmentToAnyArrayRestParameters.ts, 0, 0))
@@ -40,3 +40,32 @@ function foo<T extends string[]>(
4040
>fb : Symbol(fb, Decl(assignmentToAnyArrayRestParameters.ts, 3, 49))
4141
}
4242

43+
function bar<T extends string[], K extends number>() {
44+
>bar : Symbol(bar, Decl(assignmentToAnyArrayRestParameters.ts, 10, 1))
45+
>T : Symbol(T, Decl(assignmentToAnyArrayRestParameters.ts, 12, 13))
46+
>K : Symbol(K, Decl(assignmentToAnyArrayRestParameters.ts, 12, 32))
47+
48+
type T00 = string[]["0"];
49+
>T00 : Symbol(T00, Decl(assignmentToAnyArrayRestParameters.ts, 12, 54))
50+
51+
type T01 = string[]["0.0"]; // Error
52+
>T01 : Symbol(T01, Decl(assignmentToAnyArrayRestParameters.ts, 13, 29))
53+
54+
type T02 = string[][K | "0"];
55+
>T02 : Symbol(T02, Decl(assignmentToAnyArrayRestParameters.ts, 14, 31))
56+
>K : Symbol(K, Decl(assignmentToAnyArrayRestParameters.ts, 12, 32))
57+
58+
type T10 = T["0"];
59+
>T10 : Symbol(T10, Decl(assignmentToAnyArrayRestParameters.ts, 15, 33))
60+
>T : Symbol(T, Decl(assignmentToAnyArrayRestParameters.ts, 12, 13))
61+
62+
type T11 = T["0.0"]; // Error
63+
>T11 : Symbol(T11, Decl(assignmentToAnyArrayRestParameters.ts, 16, 22))
64+
>T : Symbol(T, Decl(assignmentToAnyArrayRestParameters.ts, 12, 13))
65+
66+
type T12 = T[K | "0"];
67+
>T12 : Symbol(T12, Decl(assignmentToAnyArrayRestParameters.ts, 17, 24))
68+
>T : Symbol(T, Decl(assignmentToAnyArrayRestParameters.ts, 12, 13))
69+
>K : Symbol(K, Decl(assignmentToAnyArrayRestParameters.ts, 12, 32))
70+
}
71+

tests/baselines/reference/assignmentToAnyArrayRestParameters.types

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//// [tests/cases/compiler/assignmentToAnyArrayRestParameters.ts] ////
22

33
=== assignmentToAnyArrayRestParameters.ts ===
4-
// Repro from #57122
4+
// Repros from #57122
55

66
function foo<T extends string[]>(
77
>foo : <T extends string[]>(fa: (s: string, ...args: string[]) => string, fb: (s: string, ...args: T) => string) => void
@@ -38,3 +38,25 @@ function foo<T extends string[]>(
3838
>fb : (s: string, ...args: T) => string
3939
}
4040

41+
function bar<T extends string[], K extends number>() {
42+
>bar : <T extends string[], K extends number>() => void
43+
44+
type T00 = string[]["0"];
45+
>T00 : string
46+
47+
type T01 = string[]["0.0"]; // Error
48+
>T01 : any
49+
50+
type T02 = string[][K | "0"];
51+
>T02 : string[][K | "0"]
52+
53+
type T10 = T["0"];
54+
>T10 : T["0"]
55+
56+
type T11 = T["0.0"]; // Error
57+
>T11 : T["0.0"]
58+
59+
type T12 = T[K | "0"];
60+
>T12 : T[K | "0"]
61+
}
62+

tests/cases/compiler/assignmentToAnyArrayRestParameters.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// @strict: true
22
// @noEmit: true
33

4-
// Repro from #57122
4+
// Repros from #57122
55

66
function foo<T extends string[]>(
77
fa: (s: string, ...args: string[]) => string,
@@ -12,3 +12,12 @@ function foo<T extends string[]>(
1212
const f3: (...args: any) => string = fb;
1313
const f4: (...args: any[]) => string = fb;
1414
}
15+
16+
function bar<T extends string[], K extends number>() {
17+
type T00 = string[]["0"];
18+
type T01 = string[]["0.0"]; // Error
19+
type T02 = string[][K | "0"];
20+
type T10 = T["0"];
21+
type T11 = T["0.0"]; // Error
22+
type T12 = T[K | "0"];
23+
}

0 commit comments

Comments
 (0)