Skip to content

Commit 270a471

Browse files
authored
Add a test case with a generic member call returning a closed over object (#55514)
1 parent 5b9547b commit 270a471

3 files changed

+92
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//// [tests/cases/compiler/genericCallOnMemberReturningClosedOverObject.ts] ////
2+
3+
=== genericCallOnMemberReturningClosedOverObject.ts ===
4+
// https://github.com/microsoft/TypeScript/issues/11584
5+
6+
function example<T1>() {
7+
>example : Symbol(example, Decl(genericCallOnMemberReturningClosedOverObject.ts, 0, 0))
8+
>T1 : Symbol(T1, Decl(genericCallOnMemberReturningClosedOverObject.ts, 2, 17))
9+
10+
let x = {
11+
>x : Symbol(x, Decl(genericCallOnMemberReturningClosedOverObject.ts, 3, 5))
12+
13+
foo: <T2>(t2: T2) => x,
14+
>foo : Symbol(foo, Decl(genericCallOnMemberReturningClosedOverObject.ts, 3, 11))
15+
>T2 : Symbol(T2, Decl(genericCallOnMemberReturningClosedOverObject.ts, 4, 10))
16+
>t2 : Symbol(t2, Decl(genericCallOnMemberReturningClosedOverObject.ts, 4, 14))
17+
>T2 : Symbol(T2, Decl(genericCallOnMemberReturningClosedOverObject.ts, 4, 10))
18+
>x : Symbol(x, Decl(genericCallOnMemberReturningClosedOverObject.ts, 3, 5))
19+
20+
bar: (t1: T1) => x,
21+
>bar : Symbol(bar, Decl(genericCallOnMemberReturningClosedOverObject.ts, 4, 27))
22+
>t1 : Symbol(t1, Decl(genericCallOnMemberReturningClosedOverObject.ts, 5, 10))
23+
>T1 : Symbol(T1, Decl(genericCallOnMemberReturningClosedOverObject.ts, 2, 17))
24+
>x : Symbol(x, Decl(genericCallOnMemberReturningClosedOverObject.ts, 3, 5))
25+
26+
};
27+
return x;
28+
>x : Symbol(x, Decl(genericCallOnMemberReturningClosedOverObject.ts, 3, 5))
29+
}
30+
31+
example<number>().foo("hello").bar(1);
32+
>example<number>().foo("hello").bar : Symbol(bar, Decl(genericCallOnMemberReturningClosedOverObject.ts, 4, 27))
33+
>example<number>().foo : Symbol(foo, Decl(genericCallOnMemberReturningClosedOverObject.ts, 3, 11))
34+
>example : Symbol(example, Decl(genericCallOnMemberReturningClosedOverObject.ts, 0, 0))
35+
>foo : Symbol(foo, Decl(genericCallOnMemberReturningClosedOverObject.ts, 3, 11))
36+
>bar : Symbol(bar, Decl(genericCallOnMemberReturningClosedOverObject.ts, 4, 27))
37+
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//// [tests/cases/compiler/genericCallOnMemberReturningClosedOverObject.ts] ////
2+
3+
=== genericCallOnMemberReturningClosedOverObject.ts ===
4+
// https://github.com/microsoft/TypeScript/issues/11584
5+
6+
function example<T1>() {
7+
>example : <T1>() => { foo: <T2>(t2: T2) => any; bar: (t1: T1) => any; }
8+
9+
let x = {
10+
>x : { foo: <T2>(t2: T2) => any; bar: (t1: T1) => any; }
11+
>{ foo: <T2>(t2: T2) => x, bar: (t1: T1) => x, } : { foo: <T2>(t2: T2) => any; bar: (t1: T1) => any; }
12+
13+
foo: <T2>(t2: T2) => x,
14+
>foo : <T2>(t2: T2) => { foo: any; bar: (t1: T1) => any; }
15+
><T2>(t2: T2) => x : <T2>(t2: T2) => { foo: any; bar: (t1: T1) => any; }
16+
>t2 : T2
17+
>x : { foo: <T2>(t2: T2) => any; bar: (t1: T1) => any; }
18+
19+
bar: (t1: T1) => x,
20+
>bar : (t1: T1) => { foo: <T2>(t2: T2) => any; bar: any; }
21+
>(t1: T1) => x : (t1: T1) => { foo: <T2>(t2: T2) => any; bar: any; }
22+
>t1 : T1
23+
>x : { foo: <T2>(t2: T2) => any; bar: (t1: T1) => any; }
24+
25+
};
26+
return x;
27+
>x : { foo: <T2>(t2: T2) => any; bar: (t1: T1) => any; }
28+
}
29+
30+
example<number>().foo("hello").bar(1);
31+
>example<number>().foo("hello").bar(1) : { foo: <T2>(t2: T2) => any; bar: (t1: number) => any; }
32+
>example<number>().foo("hello").bar : (t1: number) => { foo: <T2>(t2: T2) => any; bar: any; }
33+
>example<number>().foo("hello") : { foo: <T2>(t2: T2) => any; bar: (t1: number) => any; }
34+
>example<number>().foo : <T2>(t2: T2) => { foo: any; bar: (t1: number) => any; }
35+
>example<number>() : { foo: <T2>(t2: T2) => any; bar: (t1: number) => any; }
36+
>example : <T1>() => { foo: <T2>(t2: T2) => any; bar: (t1: T1) => any; }
37+
>foo : <T2>(t2: T2) => { foo: any; bar: (t1: number) => any; }
38+
>"hello" : "hello"
39+
>bar : (t1: number) => { foo: <T2>(t2: T2) => any; bar: any; }
40+
>1 : 1
41+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// @strict: true
2+
// @noEmit: true
3+
4+
// https://github.com/microsoft/TypeScript/issues/11584
5+
6+
function example<T1>() {
7+
let x = {
8+
foo: <T2>(t2: T2) => x,
9+
bar: (t1: T1) => x,
10+
};
11+
return x;
12+
}
13+
14+
example<number>().foo("hello").bar(1);

0 commit comments

Comments
 (0)