Skip to content

Commit 82c010e

Browse files
committed
Adding contextual typing test
1 parent 81934ab commit 82c010e

4 files changed

Lines changed: 108 additions & 0 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//// [contextualThisType.ts]
2+
interface X {
3+
a: (p: this) => this;
4+
}
5+
6+
interface Y extends X {
7+
}
8+
9+
var x: Y = {
10+
a(p) {
11+
return p;
12+
}
13+
}
14+
15+
var y = x.a(x);
16+
17+
18+
//// [contextualThisType.js]
19+
var x = {
20+
a: function (p) {
21+
return p;
22+
}
23+
};
24+
var y = x.a(x);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
=== tests/cases/conformance/types/thisType/contextualThisType.ts ===
2+
interface X {
3+
>X : Symbol(X, Decl(contextualThisType.ts, 0, 0))
4+
5+
a: (p: this) => this;
6+
>a : Symbol(a, Decl(contextualThisType.ts, 0, 13))
7+
>p : Symbol(p, Decl(contextualThisType.ts, 1, 8))
8+
}
9+
10+
interface Y extends X {
11+
>Y : Symbol(Y, Decl(contextualThisType.ts, 2, 1))
12+
>X : Symbol(X, Decl(contextualThisType.ts, 0, 0))
13+
}
14+
15+
var x: Y = {
16+
>x : Symbol(x, Decl(contextualThisType.ts, 7, 3))
17+
>Y : Symbol(Y, Decl(contextualThisType.ts, 2, 1))
18+
19+
a(p) {
20+
>a : Symbol(a, Decl(contextualThisType.ts, 7, 12))
21+
>p : Symbol(p, Decl(contextualThisType.ts, 8, 6))
22+
23+
return p;
24+
>p : Symbol(p, Decl(contextualThisType.ts, 8, 6))
25+
}
26+
}
27+
28+
var y = x.a(x);
29+
>y : Symbol(y, Decl(contextualThisType.ts, 13, 3))
30+
>x.a : Symbol(X.a, Decl(contextualThisType.ts, 0, 13))
31+
>x : Symbol(x, Decl(contextualThisType.ts, 7, 3))
32+
>a : Symbol(X.a, Decl(contextualThisType.ts, 0, 13))
33+
>x : Symbol(x, Decl(contextualThisType.ts, 7, 3))
34+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
=== tests/cases/conformance/types/thisType/contextualThisType.ts ===
2+
interface X {
3+
>X : X
4+
5+
a: (p: this) => this;
6+
>a : (p: this) => this
7+
>p : this
8+
}
9+
10+
interface Y extends X {
11+
>Y : Y
12+
>X : X
13+
}
14+
15+
var x: Y = {
16+
>x : Y
17+
>Y : Y
18+
>{ a(p) { return p; }} : { a(p: Y): Y; }
19+
20+
a(p) {
21+
>a : (p: Y) => Y
22+
>p : Y
23+
24+
return p;
25+
>p : Y
26+
}
27+
}
28+
29+
var y = x.a(x);
30+
>y : Y
31+
>x.a(x) : Y
32+
>x.a : (p: Y) => Y
33+
>x : Y
34+
>a : (p: Y) => Y
35+
>x : Y
36+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
interface X {
2+
a: (p: this) => this;
3+
}
4+
5+
interface Y extends X {
6+
}
7+
8+
var x: Y = {
9+
a(p) {
10+
return p;
11+
}
12+
}
13+
14+
var y = x.a(x);

0 commit comments

Comments
 (0)