Skip to content

Commit bfc4acd

Browse files
committed
add baseline tests for spreading TypeVariable
1 parent cc23723 commit bfc4acd

5 files changed

Lines changed: 240 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
tests/cases/conformance/types/spread/spreadTypeVariable.ts(2,12): error TS2698: Spread types may only be created from object types.
2+
tests/cases/conformance/types/spread/spreadTypeVariable.ts(10,12): error TS2698: Spread types may only be created from object types.
3+
tests/cases/conformance/types/spread/spreadTypeVariable.ts(14,12): error TS2698: Spread types may only be created from object types.
4+
5+
6+
==== tests/cases/conformance/types/spread/spreadTypeVariable.ts (3 errors) ====
7+
function f1<T extends number>(arg: T) {
8+
return { ...arg };
9+
~~~~~~
10+
!!! error TS2698: Spread types may only be created from object types.
11+
}
12+
13+
function f2<T extends string[]>(arg: T) {
14+
return { ...arg }
15+
}
16+
17+
function f3<T extends number | string[]>(arg: T) {
18+
return { ...arg }
19+
~~~~~~
20+
!!! error TS2698: Spread types may only be created from object types.
21+
}
22+
23+
function f4<T extends number | { [key: string]: any }>(arg: T) {
24+
return { ...arg }
25+
~~~~~~
26+
!!! error TS2698: Spread types may only be created from object types.
27+
}
28+
29+
function f5<T extends string[] | { [key: string]: any }>(arg: T) {
30+
return { ...arg }
31+
}
32+
33+
function f6<T>(arg: T) {
34+
return { ...arg }
35+
}
36+
37+
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//// [spreadTypeVariable.ts]
2+
function f1<T extends number>(arg: T) {
3+
return { ...arg };
4+
}
5+
6+
function f2<T extends string[]>(arg: T) {
7+
return { ...arg }
8+
}
9+
10+
function f3<T extends number | string[]>(arg: T) {
11+
return { ...arg }
12+
}
13+
14+
function f4<T extends number | { [key: string]: any }>(arg: T) {
15+
return { ...arg }
16+
}
17+
18+
function f5<T extends string[] | { [key: string]: any }>(arg: T) {
19+
return { ...arg }
20+
}
21+
22+
function f6<T>(arg: T) {
23+
return { ...arg }
24+
}
25+
26+
27+
28+
//// [spreadTypeVariable.js]
29+
var __assign = (this && this.__assign) || function () {
30+
__assign = Object.assign || function(t) {
31+
for (var s, i = 1, n = arguments.length; i < n; i++) {
32+
s = arguments[i];
33+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
34+
t[p] = s[p];
35+
}
36+
return t;
37+
};
38+
return __assign.apply(this, arguments);
39+
};
40+
function f1(arg) {
41+
return __assign({}, arg);
42+
}
43+
function f2(arg) {
44+
return __assign({}, arg);
45+
}
46+
function f3(arg) {
47+
return __assign({}, arg);
48+
}
49+
function f4(arg) {
50+
return __assign({}, arg);
51+
}
52+
function f5(arg) {
53+
return __assign({}, arg);
54+
}
55+
function f6(arg) {
56+
return __assign({}, arg);
57+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
=== tests/cases/conformance/types/spread/spreadTypeVariable.ts ===
2+
function f1<T extends number>(arg: T) {
3+
>f1 : Symbol(f1, Decl(spreadTypeVariable.ts, 0, 0))
4+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 0, 12))
5+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 0, 30))
6+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 0, 12))
7+
8+
return { ...arg };
9+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 0, 30))
10+
}
11+
12+
function f2<T extends string[]>(arg: T) {
13+
>f2 : Symbol(f2, Decl(spreadTypeVariable.ts, 2, 1))
14+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 4, 12))
15+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 4, 32))
16+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 4, 12))
17+
18+
return { ...arg }
19+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 4, 32))
20+
}
21+
22+
function f3<T extends number | string[]>(arg: T) {
23+
>f3 : Symbol(f3, Decl(spreadTypeVariable.ts, 6, 1))
24+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 8, 12))
25+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 8, 41))
26+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 8, 12))
27+
28+
return { ...arg }
29+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 8, 41))
30+
}
31+
32+
function f4<T extends number | { [key: string]: any }>(arg: T) {
33+
>f4 : Symbol(f4, Decl(spreadTypeVariable.ts, 10, 1))
34+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 12, 12))
35+
>key : Symbol(key, Decl(spreadTypeVariable.ts, 12, 34))
36+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 12, 55))
37+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 12, 12))
38+
39+
return { ...arg }
40+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 12, 55))
41+
}
42+
43+
function f5<T extends string[] | { [key: string]: any }>(arg: T) {
44+
>f5 : Symbol(f5, Decl(spreadTypeVariable.ts, 14, 1))
45+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 16, 12))
46+
>key : Symbol(key, Decl(spreadTypeVariable.ts, 16, 36))
47+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 16, 57))
48+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 16, 12))
49+
50+
return { ...arg }
51+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 16, 57))
52+
}
53+
54+
function f6<T>(arg: T) {
55+
>f6 : Symbol(f6, Decl(spreadTypeVariable.ts, 18, 1))
56+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 20, 12))
57+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 20, 15))
58+
>T : Symbol(T, Decl(spreadTypeVariable.ts, 20, 12))
59+
60+
return { ...arg }
61+
>arg : Symbol(arg, Decl(spreadTypeVariable.ts, 20, 15))
62+
}
63+
64+
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
=== tests/cases/conformance/types/spread/spreadTypeVariable.ts ===
2+
function f1<T extends number>(arg: T) {
3+
>f1 : <T extends number>(arg: T) => any
4+
>arg : T
5+
6+
return { ...arg };
7+
>{ ...arg } : any
8+
>arg : T
9+
}
10+
11+
function f2<T extends string[]>(arg: T) {
12+
>f2 : <T extends string[]>(arg: T) => T
13+
>arg : T
14+
15+
return { ...arg }
16+
>{ ...arg } : T
17+
>arg : T
18+
}
19+
20+
function f3<T extends number | string[]>(arg: T) {
21+
>f3 : <T extends number | string[]>(arg: T) => any
22+
>arg : T
23+
24+
return { ...arg }
25+
>{ ...arg } : any
26+
>arg : T
27+
}
28+
29+
function f4<T extends number | { [key: string]: any }>(arg: T) {
30+
>f4 : <T extends number | { [key: string]: any; }>(arg: T) => any
31+
>key : string
32+
>arg : T
33+
34+
return { ...arg }
35+
>{ ...arg } : any
36+
>arg : T
37+
}
38+
39+
function f5<T extends string[] | { [key: string]: any }>(arg: T) {
40+
>f5 : <T extends string[] | { [key: string]: any; }>(arg: T) => T
41+
>key : string
42+
>arg : T
43+
44+
return { ...arg }
45+
>{ ...arg } : T
46+
>arg : T
47+
}
48+
49+
function f6<T>(arg: T) {
50+
>f6 : <T>(arg: T) => T
51+
>arg : T
52+
53+
return { ...arg }
54+
>{ ...arg } : T
55+
>arg : T
56+
}
57+
58+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function f1<T extends number>(arg: T) {
2+
return { ...arg };
3+
}
4+
5+
function f2<T extends string[]>(arg: T) {
6+
return { ...arg }
7+
}
8+
9+
function f3<T extends number | string[]>(arg: T) {
10+
return { ...arg }
11+
}
12+
13+
function f4<T extends number | { [key: string]: any }>(arg: T) {
14+
return { ...arg }
15+
}
16+
17+
function f5<T extends string[] | { [key: string]: any }>(arg: T) {
18+
return { ...arg }
19+
}
20+
21+
function f6<T>(arg: T) {
22+
return { ...arg }
23+
}
24+

0 commit comments

Comments
 (0)