Skip to content

Commit d6e414c

Browse files
committed
Test spread type index signatures
1 parent cfdf751 commit d6e414c

File tree

4 files changed

+151
-0
lines changed

4 files changed

+151
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [objectSpreadIndexSignature.ts]
2+
class C {
3+
a: number;
4+
c: boolean;
5+
}
6+
let c: { ...C, b: string, c?: string, [n: number]: string };
7+
let n: number = c.a;
8+
let s: string = c[12];
9+
interface Indexed {
10+
[n: number]: string;
11+
a: boolean;
12+
}
13+
let i: { ...Indexed, b: string };
14+
s = i[101];
15+
s = i.b;
16+
17+
18+
//// [objectSpreadIndexSignature.js]
19+
var C = (function () {
20+
function C() {
21+
}
22+
return C;
23+
}());
24+
var c;
25+
var n = c.a;
26+
var s = c[12];
27+
var i;
28+
s = i[101];
29+
s = i.b;
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
=== tests/cases/conformance/types/spread/objectSpreadIndexSignature.ts ===
2+
class C {
3+
>C : Symbol(C, Decl(objectSpreadIndexSignature.ts, 0, 0))
4+
5+
a: number;
6+
>a : Symbol(C.a, Decl(objectSpreadIndexSignature.ts, 0, 9))
7+
8+
c: boolean;
9+
>c : Symbol(C.c, Decl(objectSpreadIndexSignature.ts, 1, 14))
10+
}
11+
let c: { ...C, b: string, c?: string, [n: number]: string };
12+
>c : Symbol(c, Decl(objectSpreadIndexSignature.ts, 4, 3))
13+
>C : Symbol(C, Decl(objectSpreadIndexSignature.ts, 0, 0))
14+
>b : Symbol(b, Decl(objectSpreadIndexSignature.ts, 4, 14))
15+
>c : Symbol(c, Decl(objectSpreadIndexSignature.ts, 4, 25))
16+
>n : Symbol(n, Decl(objectSpreadIndexSignature.ts, 4, 39))
17+
18+
let n: number = c.a;
19+
>n : Symbol(n, Decl(objectSpreadIndexSignature.ts, 5, 3))
20+
>c.a : Symbol(C.a, Decl(objectSpreadIndexSignature.ts, 0, 9))
21+
>c : Symbol(c, Decl(objectSpreadIndexSignature.ts, 4, 3))
22+
>a : Symbol(C.a, Decl(objectSpreadIndexSignature.ts, 0, 9))
23+
24+
let s: string = c[12];
25+
>s : Symbol(s, Decl(objectSpreadIndexSignature.ts, 6, 3))
26+
>c : Symbol(c, Decl(objectSpreadIndexSignature.ts, 4, 3))
27+
28+
interface Indexed {
29+
>Indexed : Symbol(Indexed, Decl(objectSpreadIndexSignature.ts, 6, 22))
30+
31+
[n: number]: string;
32+
>n : Symbol(n, Decl(objectSpreadIndexSignature.ts, 8, 5))
33+
34+
a: boolean;
35+
>a : Symbol(Indexed.a, Decl(objectSpreadIndexSignature.ts, 8, 24))
36+
}
37+
let i: { ...Indexed, b: string };
38+
>i : Symbol(i, Decl(objectSpreadIndexSignature.ts, 11, 3))
39+
>Indexed : Symbol(Indexed, Decl(objectSpreadIndexSignature.ts, 6, 22))
40+
>b : Symbol(b, Decl(objectSpreadIndexSignature.ts, 11, 20))
41+
42+
s = i[101];
43+
>s : Symbol(s, Decl(objectSpreadIndexSignature.ts, 6, 3))
44+
>i : Symbol(i, Decl(objectSpreadIndexSignature.ts, 11, 3))
45+
46+
s = i.b;
47+
>s : Symbol(s, Decl(objectSpreadIndexSignature.ts, 6, 3))
48+
>i.b : Symbol(b, Decl(objectSpreadIndexSignature.ts, 11, 20))
49+
>i : Symbol(i, Decl(objectSpreadIndexSignature.ts, 11, 3))
50+
>b : Symbol(b, Decl(objectSpreadIndexSignature.ts, 11, 20))
51+
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
=== tests/cases/conformance/types/spread/objectSpreadIndexSignature.ts ===
2+
class C {
3+
>C : C
4+
5+
a: number;
6+
>a : number
7+
8+
c: boolean;
9+
>c : boolean
10+
}
11+
let c: { ...C, b: string, c?: string, [n: number]: string };
12+
>c : { ...C; b: string; c?: string; [n: number]: string; }
13+
>C : C
14+
>b : string
15+
>c : string
16+
>n : number
17+
18+
let n: number = c.a;
19+
>n : number
20+
>c.a : number
21+
>c : { ...C; b: string; c?: string; [n: number]: string; }
22+
>a : number
23+
24+
let s: string = c[12];
25+
>s : string
26+
>c[12] : string
27+
>c : { ...C; b: string; c?: string; [n: number]: string; }
28+
>12 : 12
29+
30+
interface Indexed {
31+
>Indexed : Indexed
32+
33+
[n: number]: string;
34+
>n : number
35+
36+
a: boolean;
37+
>a : boolean
38+
}
39+
let i: { ...Indexed, b: string };
40+
>i : { ...Indexed; b: string; [n: number]: string; }
41+
>Indexed : Indexed
42+
>b : string
43+
44+
s = i[101];
45+
>s = i[101] : string
46+
>s : string
47+
>i[101] : string
48+
>i : { ...Indexed; b: string; [n: number]: string; }
49+
>101 : 101
50+
51+
s = i.b;
52+
>s = i.b : string
53+
>s : string
54+
>i.b : string
55+
>i : { ...Indexed; b: string; [n: number]: string; }
56+
>b : string
57+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class C {
2+
a: number;
3+
c: boolean;
4+
}
5+
let c: { ...C, b: string, c?: string, [n: number]: string };
6+
let n: number = c.a;
7+
let s: string = c[12];
8+
interface Indexed {
9+
[n: number]: string;
10+
a: boolean;
11+
}
12+
let i: { ...Indexed, b: string };
13+
s = i[101];
14+
s = i.b;

0 commit comments

Comments
 (0)