Skip to content

Commit 0f773c5

Browse files
committed
Add object spread scenario tests
1 parent 7e7a26a commit 0f773c5

File tree

4 files changed

+252
-0
lines changed

4 files changed

+252
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//// [objectSpreadScenarios.ts]
2+
interface A1 { a: boolean }
3+
interface B1 { b: number };
4+
function override<U>(initial: U, override: U): U {
5+
return { ...initial, ...override };
6+
}
7+
function update<U>(this: { u: U }, override: U): void {
8+
this.u = { ...this.u, ...override };
9+
}
10+
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
11+
return { ...one, ...two };
12+
}
13+
let a1: A1 = { a: true };
14+
let b1: B1 = { b: 101 };
15+
a1 = override(a1, { a: false });
16+
let host = { u: a1, update };
17+
host.update({ a: false });
18+
let mixed = mixin(a1, b1);
19+
20+
21+
//// [objectSpreadScenarios.js]
22+
var __assign = (this && this.__assign) || Object.assign || function(t) {
23+
for (var s, i = 1, n = arguments.length; i < n; i++) {
24+
s = arguments[i];
25+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
26+
t[p] = s[p];
27+
}
28+
return t;
29+
};
30+
;
31+
function override(initial, override) {
32+
return __assign({}, initial, override);
33+
}
34+
function update(override) {
35+
this.u = __assign({}, this.u, override);
36+
}
37+
function mixin(one, two) {
38+
return __assign({}, one, two);
39+
}
40+
var a1 = { a: true };
41+
var b1 = { b: 101 };
42+
a1 = override(a1, { a: false });
43+
var host = { u: a1, update: update };
44+
host.update({ a: false });
45+
var mixed = mixin(a1, b1);
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
=== tests/cases/conformance/types/spread/objectSpreadScenarios.ts ===
2+
interface A1 { a: boolean }
3+
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
4+
>a : Symbol(A1.a, Decl(objectSpreadScenarios.ts, 0, 14))
5+
6+
interface B1 { b: number };
7+
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
8+
>b : Symbol(B1.b, Decl(objectSpreadScenarios.ts, 1, 14))
9+
10+
function override<U>(initial: U, override: U): U {
11+
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
12+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
13+
>initial : Symbol(initial, Decl(objectSpreadScenarios.ts, 2, 21))
14+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
15+
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 2, 32))
16+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
17+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
18+
19+
return { ...initial, ...override };
20+
}
21+
function update<U>(this: { u: U }, override: U): void {
22+
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 4, 1))
23+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
24+
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
25+
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
26+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
27+
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 5, 34))
28+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
29+
30+
this.u = { ...this.u, ...override };
31+
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
32+
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
33+
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
34+
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
35+
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
36+
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
37+
}
38+
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
39+
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
40+
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
41+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
42+
>one : Symbol(one, Decl(objectSpreadScenarios.ts, 8, 21))
43+
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
44+
>two : Symbol(two, Decl(objectSpreadScenarios.ts, 8, 28))
45+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
46+
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
47+
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
48+
49+
return { ...one, ...two };
50+
}
51+
let a1: A1 = { a: true };
52+
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
53+
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
54+
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 11, 14))
55+
56+
let b1: B1 = { b: 101 };
57+
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))
58+
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
59+
>b : Symbol(b, Decl(objectSpreadScenarios.ts, 12, 14))
60+
61+
a1 = override(a1, { a: false });
62+
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
63+
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
64+
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
65+
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 13, 19))
66+
67+
let host = { u: a1, update };
68+
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
69+
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 14, 12))
70+
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
71+
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
72+
73+
host.update({ a: false });
74+
>host.update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
75+
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
76+
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
77+
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 15, 13))
78+
79+
let mixed = mixin(a1, b1);
80+
>mixed : Symbol(mixed, Decl(objectSpreadScenarios.ts, 16, 3))
81+
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
82+
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
83+
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))
84+
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
=== tests/cases/conformance/types/spread/objectSpreadScenarios.ts ===
2+
interface A1 { a: boolean }
3+
>A1 : A1
4+
>a : boolean
5+
6+
interface B1 { b: number };
7+
>B1 : B1
8+
>b : number
9+
10+
function override<U>(initial: U, override: U): U {
11+
>override : <U>(initial: U, override: U) => U
12+
>U : U
13+
>initial : U
14+
>U : U
15+
>override : U
16+
>U : U
17+
>U : U
18+
19+
return { ...initial, ...override };
20+
>{ ...initial, ...override } : { ...U; ...U }
21+
>initial : any
22+
>override : any
23+
}
24+
function update<U>(this: { u: U }, override: U): void {
25+
>update : <U>(this: { u: U; }, override: U) => void
26+
>U : U
27+
>this : { u: U; }
28+
>u : U
29+
>U : U
30+
>override : U
31+
>U : U
32+
33+
this.u = { ...this.u, ...override };
34+
>this.u = { ...this.u, ...override } : { ...U; ...U }
35+
>this.u : U
36+
>this : { u: U; }
37+
>u : U
38+
>{ ...this.u, ...override } : { ...U; ...U }
39+
>this.u : U
40+
>this : { u: U; }
41+
>u : U
42+
>override : any
43+
}
44+
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
45+
>mixin : <T, U>(one: T, two: U) => { ...T; ...U }
46+
>T : T
47+
>U : U
48+
>one : T
49+
>T : T
50+
>two : U
51+
>U : U
52+
>T : T
53+
>U : U
54+
55+
return { ...one, ...two };
56+
>{ ...one, ...two } : { ...T; ...U }
57+
>one : any
58+
>two : any
59+
}
60+
let a1: A1 = { a: true };
61+
>a1 : A1
62+
>A1 : A1
63+
>{ a: true } : { a: true; }
64+
>a : boolean
65+
>true : true
66+
67+
let b1: B1 = { b: 101 };
68+
>b1 : B1
69+
>B1 : B1
70+
>{ b: 101 } : { b: number; }
71+
>b : number
72+
>101 : 101
73+
74+
a1 = override(a1, { a: false });
75+
>a1 = override(a1, { a: false }) : A1
76+
>a1 : A1
77+
>override(a1, { a: false }) : A1
78+
>override : <U>(initial: U, override: U) => U
79+
>a1 : A1
80+
>{ a: false } : { a: false; }
81+
>a : boolean
82+
>false : false
83+
84+
let host = { u: a1, update };
85+
>host : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
86+
>{ u: a1, update } : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
87+
>u : A1
88+
>a1 : A1
89+
>update : <U>(this: { u: U; }, override: U) => void
90+
91+
host.update({ a: false });
92+
>host.update({ a: false }) : void
93+
>host.update : <U>(this: { u: U; }, override: U) => void
94+
>host : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
95+
>update : <U>(this: { u: U; }, override: U) => void
96+
>{ a: false } : { a: false; }
97+
>a : boolean
98+
>false : false
99+
100+
let mixed = mixin(a1, b1);
101+
>mixed : { ...A1; ...B1 }
102+
>mixin(a1, b1) : { ...A1; ...B1 }
103+
>mixin : <T, U>(one: T, two: U) => { ...T; ...U }
104+
>a1 : A1
105+
>b1 : B1
106+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
interface A1 { a: boolean }
2+
interface B1 { b: number };
3+
function override<U>(initial: U, override: U): U {
4+
return { ...initial, ...override };
5+
}
6+
function update<U>(this: { u: U }, override: U): void {
7+
this.u = { ...this.u, ...override };
8+
}
9+
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
10+
return { ...one, ...two };
11+
}
12+
let a1: A1 = { a: true };
13+
let b1: B1 = { b: 101 };
14+
a1 = override(a1, { a: false });
15+
let host = { u: a1, update };
16+
host.update({ a: false });
17+
let mixed = mixin(a1, b1);

0 commit comments

Comments
 (0)