diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.js b/tests/baselines/reference/isomorphicMappedTypeInference.js index 6cfc2ec7350..aa904e9afa1 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.js +++ b/tests/baselines/reference/isomorphicMappedTypeInference.js @@ -157,10 +157,14 @@ o = foo(o, {b: 9}); declare function f20(obj: Pick): T; declare function f21(obj: Pick): K; declare function f22(obj: Boxified>): T; +declare function f23(obj: Pick): T; +declare function f24(obj: Pick): T & U; let x0 = f20({ foo: 42, bar: "hello" }); let x1 = f21({ foo: 42, bar: "hello" }); let x2 = f22({ foo: { value: 42} , bar: { value: "hello" } }); +let x3 = f23({ foo: 42, bar: "hello" }); +let x4 = f24({ foo: 42, bar: "hello" }); // Repro from #29765 @@ -282,6 +286,8 @@ o = foo(o, { b: 9 }); var x0 = f20({ foo: 42, bar: "hello" }); var x1 = f21({ foo: 42, bar: "hello" }); var x2 = f22({ foo: { value: 42 }, bar: { value: "hello" } }); +var x3 = f23({ foo: 42, bar: "hello" }); +var x4 = f24({ foo: 42, bar: "hello" }); // Repro from #29765 function getProps(obj, list) { return {}; @@ -360,6 +366,8 @@ declare let o: { declare function f20(obj: Pick): T; declare function f21(obj: Pick): K; declare function f22(obj: Boxified>): T; +declare function f23(obj: Pick): T; +declare function f24(obj: Pick): T & U; declare let x0: { foo: number; bar: string; @@ -369,6 +377,17 @@ declare let x2: { foo: number; bar: string; }; +declare let x3: { + foo: number; + bar: string; +}; +declare let x4: { + foo: number; + bar: string; +} & { + foo: number; + bar: string; +}; declare function getProps(obj: T, list: K[]): Pick; declare const myAny: any; declare const o1: Pick; diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.symbols b/tests/baselines/reference/isomorphicMappedTypeInference.symbols index 6f999f91dc4..3192be13ff6 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.symbols +++ b/tests/baselines/reference/isomorphicMappedTypeInference.symbols @@ -523,56 +523,96 @@ declare function f22(obj: Boxified>): T; >K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 157, 23)) >T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 157, 21)) +declare function f23(obj: Pick): T; +>f23 : Symbol(f23, Decl(isomorphicMappedTypeInference.ts, 157, 73)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 158, 21)) +>U : Symbol(U, Decl(isomorphicMappedTypeInference.ts, 158, 23)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 158, 21)) +>K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 158, 42)) +>U : Symbol(U, Decl(isomorphicMappedTypeInference.ts, 158, 23)) +>obj : Symbol(obj, Decl(isomorphicMappedTypeInference.ts, 158, 56)) +>Pick : Symbol(Pick, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 158, 21)) +>K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 158, 42)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 158, 21)) + +declare function f24(obj: Pick): T & U; +>f24 : Symbol(f24, Decl(isomorphicMappedTypeInference.ts, 158, 76)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 159, 21)) +>U : Symbol(U, Decl(isomorphicMappedTypeInference.ts, 159, 23)) +>K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 159, 26)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 159, 21)) +>U : Symbol(U, Decl(isomorphicMappedTypeInference.ts, 159, 23)) +>obj : Symbol(obj, Decl(isomorphicMappedTypeInference.ts, 159, 56)) +>Pick : Symbol(Pick, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 159, 21)) +>U : Symbol(U, Decl(isomorphicMappedTypeInference.ts, 159, 23)) +>K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 159, 26)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 159, 21)) +>U : Symbol(U, Decl(isomorphicMappedTypeInference.ts, 159, 23)) + let x0 = f20({ foo: 42, bar: "hello" }); ->x0 : Symbol(x0, Decl(isomorphicMappedTypeInference.ts, 159, 3)) +>x0 : Symbol(x0, Decl(isomorphicMappedTypeInference.ts, 161, 3)) >f20 : Symbol(f20, Decl(isomorphicMappedTypeInference.ts, 150, 19)) ->foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 159, 14)) ->bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 159, 23)) +>foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 161, 14)) +>bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 161, 23)) let x1 = f21({ foo: 42, bar: "hello" }); ->x1 : Symbol(x1, Decl(isomorphicMappedTypeInference.ts, 160, 3)) +>x1 : Symbol(x1, Decl(isomorphicMappedTypeInference.ts, 162, 3)) >f21 : Symbol(f21, Decl(isomorphicMappedTypeInference.ts, 155, 63)) ->foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 160, 14)) ->bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 160, 23)) +>foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 162, 14)) +>bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 162, 23)) let x2 = f22({ foo: { value: 42} , bar: { value: "hello" } }); ->x2 : Symbol(x2, Decl(isomorphicMappedTypeInference.ts, 161, 3)) +>x2 : Symbol(x2, Decl(isomorphicMappedTypeInference.ts, 163, 3)) >f22 : Symbol(f22, Decl(isomorphicMappedTypeInference.ts, 156, 63)) ->foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 161, 14)) ->value : Symbol(value, Decl(isomorphicMappedTypeInference.ts, 161, 21)) ->bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 161, 34)) ->value : Symbol(value, Decl(isomorphicMappedTypeInference.ts, 161, 41)) +>foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 163, 14)) +>value : Symbol(value, Decl(isomorphicMappedTypeInference.ts, 163, 21)) +>bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 163, 34)) +>value : Symbol(value, Decl(isomorphicMappedTypeInference.ts, 163, 41)) + +let x3 = f23({ foo: 42, bar: "hello" }); +>x3 : Symbol(x3, Decl(isomorphicMappedTypeInference.ts, 164, 3)) +>f23 : Symbol(f23, Decl(isomorphicMappedTypeInference.ts, 157, 73)) +>foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 164, 14)) +>bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 164, 23)) + +let x4 = f24({ foo: 42, bar: "hello" }); +>x4 : Symbol(x4, Decl(isomorphicMappedTypeInference.ts, 165, 3)) +>f24 : Symbol(f24, Decl(isomorphicMappedTypeInference.ts, 158, 76)) +>foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 165, 14)) +>bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 165, 23)) // Repro from #29765 function getProps(obj: T, list: K[]): Pick { ->getProps : Symbol(getProps, Decl(isomorphicMappedTypeInference.ts, 161, 62)) ->T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 165, 18)) ->K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 165, 20)) ->T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 165, 18)) ->obj : Symbol(obj, Decl(isomorphicMappedTypeInference.ts, 165, 40)) ->T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 165, 18)) ->list : Symbol(list, Decl(isomorphicMappedTypeInference.ts, 165, 47)) ->K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 165, 20)) +>getProps : Symbol(getProps, Decl(isomorphicMappedTypeInference.ts, 165, 40)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 169, 18)) +>K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 169, 20)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 169, 18)) +>obj : Symbol(obj, Decl(isomorphicMappedTypeInference.ts, 169, 40)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 169, 18)) +>list : Symbol(list, Decl(isomorphicMappedTypeInference.ts, 169, 47)) +>K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 169, 20)) >Pick : Symbol(Pick, Decl(lib.es5.d.ts, --, --)) ->T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 165, 18)) ->K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 165, 20)) +>T : Symbol(T, Decl(isomorphicMappedTypeInference.ts, 169, 18)) +>K : Symbol(K, Decl(isomorphicMappedTypeInference.ts, 169, 20)) return {} as any; } const myAny: any = {}; ->myAny : Symbol(myAny, Decl(isomorphicMappedTypeInference.ts, 169, 5)) +>myAny : Symbol(myAny, Decl(isomorphicMappedTypeInference.ts, 173, 5)) const o1 = getProps(myAny, ['foo', 'bar']); ->o1 : Symbol(o1, Decl(isomorphicMappedTypeInference.ts, 171, 5)) ->getProps : Symbol(getProps, Decl(isomorphicMappedTypeInference.ts, 161, 62)) ->myAny : Symbol(myAny, Decl(isomorphicMappedTypeInference.ts, 169, 5)) +>o1 : Symbol(o1, Decl(isomorphicMappedTypeInference.ts, 175, 5)) +>getProps : Symbol(getProps, Decl(isomorphicMappedTypeInference.ts, 165, 40)) +>myAny : Symbol(myAny, Decl(isomorphicMappedTypeInference.ts, 173, 5)) const o2: { foo: any; bar: any } = getProps(myAny, ['foo', 'bar']); ->o2 : Symbol(o2, Decl(isomorphicMappedTypeInference.ts, 173, 5)) ->foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 173, 11)) ->bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 173, 21)) ->getProps : Symbol(getProps, Decl(isomorphicMappedTypeInference.ts, 161, 62)) ->myAny : Symbol(myAny, Decl(isomorphicMappedTypeInference.ts, 169, 5)) +>o2 : Symbol(o2, Decl(isomorphicMappedTypeInference.ts, 177, 5)) +>foo : Symbol(foo, Decl(isomorphicMappedTypeInference.ts, 177, 11)) +>bar : Symbol(bar, Decl(isomorphicMappedTypeInference.ts, 177, 21)) +>getProps : Symbol(getProps, Decl(isomorphicMappedTypeInference.ts, 165, 40)) +>myAny : Symbol(myAny, Decl(isomorphicMappedTypeInference.ts, 173, 5)) diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index b37175b5eed..1f1fa0d200a 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -522,6 +522,14 @@ declare function f22(obj: Boxified>): T; >f22 : (obj: Boxified>) => T >obj : Boxified> +declare function f23(obj: Pick): T; +>f23 : (obj: Pick) => T +>obj : Pick + +declare function f24(obj: Pick): T & U; +>f24 : (obj: Pick) => T & U +>obj : Pick + let x0 = f20({ foo: 42, bar: "hello" }); >x0 : { foo: number; bar: string; } >f20({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } @@ -556,6 +564,26 @@ let x2 = f22({ foo: { value: 42} , bar: { value: "hello" } }); >value : string >"hello" : "hello" +let x3 = f23({ foo: 42, bar: "hello" }); +>x3 : { foo: number; bar: string; } +>f23({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } +>f23 : (obj: Pick) => T +>{ foo: 42, bar: "hello" } : { foo: number; bar: string; } +>foo : number +>42 : 42 +>bar : string +>"hello" : "hello" + +let x4 = f24({ foo: 42, bar: "hello" }); +>x4 : { foo: number; bar: string; } & { foo: number; bar: string; } +>f24({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } & { foo: number; bar: string; } +>f24 : (obj: Pick) => T & U +>{ foo: 42, bar: "hello" } : { foo: number; bar: string; } +>foo : number +>42 : 42 +>bar : string +>"hello" : "hello" + // Repro from #29765 function getProps(obj: T, list: K[]): Pick {