mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-01 14:25:16 -05:00
Add object spread scenario tests
This commit is contained in:
45
tests/baselines/reference/objectSpreadScenarios.js
Normal file
45
tests/baselines/reference/objectSpreadScenarios.js
Normal file
@@ -0,0 +1,45 @@
|
||||
//// [objectSpreadScenarios.ts]
|
||||
interface A1 { a: boolean }
|
||||
interface B1 { b: number };
|
||||
function override<U>(initial: U, override: U): U {
|
||||
return { ...initial, ...override };
|
||||
}
|
||||
function update<U>(this: { u: U }, override: U): void {
|
||||
this.u = { ...this.u, ...override };
|
||||
}
|
||||
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
|
||||
return { ...one, ...two };
|
||||
}
|
||||
let a1: A1 = { a: true };
|
||||
let b1: B1 = { b: 101 };
|
||||
a1 = override(a1, { a: false });
|
||||
let host = { u: a1, update };
|
||||
host.update({ a: false });
|
||||
let mixed = mixin(a1, b1);
|
||||
|
||||
|
||||
//// [objectSpreadScenarios.js]
|
||||
var __assign = (this && this.__assign) || Object.assign || function(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||
t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
;
|
||||
function override(initial, override) {
|
||||
return __assign({}, initial, override);
|
||||
}
|
||||
function update(override) {
|
||||
this.u = __assign({}, this.u, override);
|
||||
}
|
||||
function mixin(one, two) {
|
||||
return __assign({}, one, two);
|
||||
}
|
||||
var a1 = { a: true };
|
||||
var b1 = { b: 101 };
|
||||
a1 = override(a1, { a: false });
|
||||
var host = { u: a1, update: update };
|
||||
host.update({ a: false });
|
||||
var mixed = mixin(a1, b1);
|
||||
84
tests/baselines/reference/objectSpreadScenarios.symbols
Normal file
84
tests/baselines/reference/objectSpreadScenarios.symbols
Normal file
@@ -0,0 +1,84 @@
|
||||
=== tests/cases/conformance/types/spread/objectSpreadScenarios.ts ===
|
||||
interface A1 { a: boolean }
|
||||
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
|
||||
>a : Symbol(A1.a, Decl(objectSpreadScenarios.ts, 0, 14))
|
||||
|
||||
interface B1 { b: number };
|
||||
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
|
||||
>b : Symbol(B1.b, Decl(objectSpreadScenarios.ts, 1, 14))
|
||||
|
||||
function override<U>(initial: U, override: U): U {
|
||||
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
|
||||
>initial : Symbol(initial, Decl(objectSpreadScenarios.ts, 2, 21))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
|
||||
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 2, 32))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
|
||||
|
||||
return { ...initial, ...override };
|
||||
}
|
||||
function update<U>(this: { u: U }, override: U): void {
|
||||
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 4, 1))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
|
||||
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
|
||||
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
|
||||
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 5, 34))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
|
||||
|
||||
this.u = { ...this.u, ...override };
|
||||
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
|
||||
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
|
||||
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
|
||||
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
|
||||
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
|
||||
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
|
||||
}
|
||||
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
|
||||
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
|
||||
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
|
||||
>one : Symbol(one, Decl(objectSpreadScenarios.ts, 8, 21))
|
||||
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
|
||||
>two : Symbol(two, Decl(objectSpreadScenarios.ts, 8, 28))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
|
||||
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
|
||||
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
|
||||
|
||||
return { ...one, ...two };
|
||||
}
|
||||
let a1: A1 = { a: true };
|
||||
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
|
||||
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
|
||||
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 11, 14))
|
||||
|
||||
let b1: B1 = { b: 101 };
|
||||
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))
|
||||
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
|
||||
>b : Symbol(b, Decl(objectSpreadScenarios.ts, 12, 14))
|
||||
|
||||
a1 = override(a1, { a: false });
|
||||
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
|
||||
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
|
||||
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
|
||||
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 13, 19))
|
||||
|
||||
let host = { u: a1, update };
|
||||
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
|
||||
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 14, 12))
|
||||
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
|
||||
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
|
||||
|
||||
host.update({ a: false });
|
||||
>host.update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
|
||||
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
|
||||
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
|
||||
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 15, 13))
|
||||
|
||||
let mixed = mixin(a1, b1);
|
||||
>mixed : Symbol(mixed, Decl(objectSpreadScenarios.ts, 16, 3))
|
||||
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
|
||||
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
|
||||
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))
|
||||
|
||||
106
tests/baselines/reference/objectSpreadScenarios.types
Normal file
106
tests/baselines/reference/objectSpreadScenarios.types
Normal file
@@ -0,0 +1,106 @@
|
||||
=== tests/cases/conformance/types/spread/objectSpreadScenarios.ts ===
|
||||
interface A1 { a: boolean }
|
||||
>A1 : A1
|
||||
>a : boolean
|
||||
|
||||
interface B1 { b: number };
|
||||
>B1 : B1
|
||||
>b : number
|
||||
|
||||
function override<U>(initial: U, override: U): U {
|
||||
>override : <U>(initial: U, override: U) => U
|
||||
>U : U
|
||||
>initial : U
|
||||
>U : U
|
||||
>override : U
|
||||
>U : U
|
||||
>U : U
|
||||
|
||||
return { ...initial, ...override };
|
||||
>{ ...initial, ...override } : { ...U; ...U }
|
||||
>initial : any
|
||||
>override : any
|
||||
}
|
||||
function update<U>(this: { u: U }, override: U): void {
|
||||
>update : <U>(this: { u: U; }, override: U) => void
|
||||
>U : U
|
||||
>this : { u: U; }
|
||||
>u : U
|
||||
>U : U
|
||||
>override : U
|
||||
>U : U
|
||||
|
||||
this.u = { ...this.u, ...override };
|
||||
>this.u = { ...this.u, ...override } : { ...U; ...U }
|
||||
>this.u : U
|
||||
>this : { u: U; }
|
||||
>u : U
|
||||
>{ ...this.u, ...override } : { ...U; ...U }
|
||||
>this.u : U
|
||||
>this : { u: U; }
|
||||
>u : U
|
||||
>override : any
|
||||
}
|
||||
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
|
||||
>mixin : <T, U>(one: T, two: U) => { ...T; ...U }
|
||||
>T : T
|
||||
>U : U
|
||||
>one : T
|
||||
>T : T
|
||||
>two : U
|
||||
>U : U
|
||||
>T : T
|
||||
>U : U
|
||||
|
||||
return { ...one, ...two };
|
||||
>{ ...one, ...two } : { ...T; ...U }
|
||||
>one : any
|
||||
>two : any
|
||||
}
|
||||
let a1: A1 = { a: true };
|
||||
>a1 : A1
|
||||
>A1 : A1
|
||||
>{ a: true } : { a: true; }
|
||||
>a : boolean
|
||||
>true : true
|
||||
|
||||
let b1: B1 = { b: 101 };
|
||||
>b1 : B1
|
||||
>B1 : B1
|
||||
>{ b: 101 } : { b: number; }
|
||||
>b : number
|
||||
>101 : 101
|
||||
|
||||
a1 = override(a1, { a: false });
|
||||
>a1 = override(a1, { a: false }) : A1
|
||||
>a1 : A1
|
||||
>override(a1, { a: false }) : A1
|
||||
>override : <U>(initial: U, override: U) => U
|
||||
>a1 : A1
|
||||
>{ a: false } : { a: false; }
|
||||
>a : boolean
|
||||
>false : false
|
||||
|
||||
let host = { u: a1, update };
|
||||
>host : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
|
||||
>{ u: a1, update } : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
|
||||
>u : A1
|
||||
>a1 : A1
|
||||
>update : <U>(this: { u: U; }, override: U) => void
|
||||
|
||||
host.update({ a: false });
|
||||
>host.update({ a: false }) : void
|
||||
>host.update : <U>(this: { u: U; }, override: U) => void
|
||||
>host : { u: A1; update: <U>(this: { u: U; }, override: U) => void; }
|
||||
>update : <U>(this: { u: U; }, override: U) => void
|
||||
>{ a: false } : { a: false; }
|
||||
>a : boolean
|
||||
>false : false
|
||||
|
||||
let mixed = mixin(a1, b1);
|
||||
>mixed : { ...A1; ...B1 }
|
||||
>mixin(a1, b1) : { ...A1; ...B1 }
|
||||
>mixin : <T, U>(one: T, two: U) => { ...T; ...U }
|
||||
>a1 : A1
|
||||
>b1 : B1
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
interface A1 { a: boolean }
|
||||
interface B1 { b: number };
|
||||
function override<U>(initial: U, override: U): U {
|
||||
return { ...initial, ...override };
|
||||
}
|
||||
function update<U>(this: { u: U }, override: U): void {
|
||||
this.u = { ...this.u, ...override };
|
||||
}
|
||||
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
|
||||
return { ...one, ...two };
|
||||
}
|
||||
let a1: A1 = { a: true };
|
||||
let b1: B1 = { b: 101 };
|
||||
a1 = override(a1, { a: false });
|
||||
let host = { u: a1, update };
|
||||
host.update({ a: false });
|
||||
let mixed = mixin(a1, b1);
|
||||
Reference in New Issue
Block a user