Skip to content

Commit 7dd8232

Browse files
Accepted baselines.
1 parent 22dabb8 commit 7dd8232

File tree

3 files changed

+217
-0
lines changed

3 files changed

+217
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
//// [tests/cases/compiler/subclassThisTypeAssignable02.ts] ////
2+
3+
//// [tile1.ts]
4+
interface Lifecycle<Attrs, State extends Lifecycle<Attrs, State>> {
5+
oninit?(vnode: Vnode<Attrs, State>): number;
6+
[_: number]: any;
7+
}
8+
9+
interface Vnode<Attrs, State extends Lifecycle<Attrs, State>> {
10+
tag: Component<Attrs, State>;
11+
}
12+
13+
interface Component<Attrs, State extends Lifecycle<Attrs, State>> {
14+
view(this: State, vnode: Vnode<Attrs, State>): number;
15+
}
16+
17+
interface ClassComponent<A> extends Lifecycle<A, ClassComponent<A>> {
18+
oninit?(vnode: Vnode<A, this>): number;
19+
view(vnode: Vnode<A, this>): number;
20+
}
21+
22+
interface MyAttrs { id: number }
23+
class C implements ClassComponent<MyAttrs> {
24+
view(v: Vnode<MyAttrs, C>) { return 0; }
25+
26+
// Must declare a compatible-ish index signature or else
27+
// we won't correctly implement ClassComponent.
28+
[_: number]: unknown;
29+
}
30+
31+
const test8: ClassComponent<any> = new C();
32+
//// [file1.js]
33+
/** @type {ClassComponent<any>} */
34+
const test9 = new C();
35+
36+
37+
//// [tile1.js]
38+
"use strict";
39+
var C = /** @class */ (function () {
40+
function C() {
41+
}
42+
C.prototype.view = function (v) { return 0; };
43+
return C;
44+
}());
45+
var test8 = new C();
46+
//// [file1.js]
47+
"use strict";
48+
/** @type {ClassComponent<any>} */
49+
var test9 = new C();
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
=== tests/cases/compiler/tile1.ts ===
2+
interface Lifecycle<Attrs, State extends Lifecycle<Attrs, State>> {
3+
>Lifecycle : Symbol(Lifecycle, Decl(tile1.ts, 0, 0))
4+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 0, 20))
5+
>State : Symbol(State, Decl(tile1.ts, 0, 26))
6+
>Lifecycle : Symbol(Lifecycle, Decl(tile1.ts, 0, 0))
7+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 0, 20))
8+
>State : Symbol(State, Decl(tile1.ts, 0, 26))
9+
10+
oninit?(vnode: Vnode<Attrs, State>): number;
11+
>oninit : Symbol(Lifecycle.oninit, Decl(tile1.ts, 0, 67))
12+
>vnode : Symbol(vnode, Decl(tile1.ts, 1, 9))
13+
>Vnode : Symbol(Vnode, Decl(tile1.ts, 3, 1))
14+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 0, 20))
15+
>State : Symbol(State, Decl(tile1.ts, 0, 26))
16+
17+
[_: number]: any;
18+
>_ : Symbol(_, Decl(tile1.ts, 2, 2))
19+
}
20+
21+
interface Vnode<Attrs, State extends Lifecycle<Attrs, State>> {
22+
>Vnode : Symbol(Vnode, Decl(tile1.ts, 3, 1))
23+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 5, 16))
24+
>State : Symbol(State, Decl(tile1.ts, 5, 22))
25+
>Lifecycle : Symbol(Lifecycle, Decl(tile1.ts, 0, 0))
26+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 5, 16))
27+
>State : Symbol(State, Decl(tile1.ts, 5, 22))
28+
29+
tag: Component<Attrs, State>;
30+
>tag : Symbol(Vnode.tag, Decl(tile1.ts, 5, 63))
31+
>Component : Symbol(Component, Decl(tile1.ts, 7, 1))
32+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 5, 16))
33+
>State : Symbol(State, Decl(tile1.ts, 5, 22))
34+
}
35+
36+
interface Component<Attrs, State extends Lifecycle<Attrs, State>> {
37+
>Component : Symbol(Component, Decl(tile1.ts, 7, 1))
38+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 9, 20))
39+
>State : Symbol(State, Decl(tile1.ts, 9, 26))
40+
>Lifecycle : Symbol(Lifecycle, Decl(tile1.ts, 0, 0))
41+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 9, 20))
42+
>State : Symbol(State, Decl(tile1.ts, 9, 26))
43+
44+
view(this: State, vnode: Vnode<Attrs, State>): number;
45+
>view : Symbol(Component.view, Decl(tile1.ts, 9, 67))
46+
>this : Symbol(this, Decl(tile1.ts, 10, 6))
47+
>State : Symbol(State, Decl(tile1.ts, 9, 26))
48+
>vnode : Symbol(vnode, Decl(tile1.ts, 10, 18))
49+
>Vnode : Symbol(Vnode, Decl(tile1.ts, 3, 1))
50+
>Attrs : Symbol(Attrs, Decl(tile1.ts, 9, 20))
51+
>State : Symbol(State, Decl(tile1.ts, 9, 26))
52+
}
53+
54+
interface ClassComponent<A> extends Lifecycle<A, ClassComponent<A>> {
55+
>ClassComponent : Symbol(ClassComponent, Decl(tile1.ts, 11, 1))
56+
>A : Symbol(A, Decl(tile1.ts, 13, 25))
57+
>Lifecycle : Symbol(Lifecycle, Decl(tile1.ts, 0, 0))
58+
>A : Symbol(A, Decl(tile1.ts, 13, 25))
59+
>ClassComponent : Symbol(ClassComponent, Decl(tile1.ts, 11, 1))
60+
>A : Symbol(A, Decl(tile1.ts, 13, 25))
61+
62+
oninit?(vnode: Vnode<A, this>): number;
63+
>oninit : Symbol(ClassComponent.oninit, Decl(tile1.ts, 13, 69))
64+
>vnode : Symbol(vnode, Decl(tile1.ts, 14, 9))
65+
>Vnode : Symbol(Vnode, Decl(tile1.ts, 3, 1))
66+
>A : Symbol(A, Decl(tile1.ts, 13, 25))
67+
68+
view(vnode: Vnode<A, this>): number;
69+
>view : Symbol(ClassComponent.view, Decl(tile1.ts, 14, 40))
70+
>vnode : Symbol(vnode, Decl(tile1.ts, 15, 6))
71+
>Vnode : Symbol(Vnode, Decl(tile1.ts, 3, 1))
72+
>A : Symbol(A, Decl(tile1.ts, 13, 25))
73+
}
74+
75+
interface MyAttrs { id: number }
76+
>MyAttrs : Symbol(MyAttrs, Decl(tile1.ts, 16, 1))
77+
>id : Symbol(MyAttrs.id, Decl(tile1.ts, 18, 19))
78+
79+
class C implements ClassComponent<MyAttrs> {
80+
>C : Symbol(C, Decl(tile1.ts, 18, 32))
81+
>ClassComponent : Symbol(ClassComponent, Decl(tile1.ts, 11, 1))
82+
>MyAttrs : Symbol(MyAttrs, Decl(tile1.ts, 16, 1))
83+
84+
view(v: Vnode<MyAttrs, C>) { return 0; }
85+
>view : Symbol(C.view, Decl(tile1.ts, 19, 44))
86+
>v : Symbol(v, Decl(tile1.ts, 20, 6))
87+
>Vnode : Symbol(Vnode, Decl(tile1.ts, 3, 1))
88+
>MyAttrs : Symbol(MyAttrs, Decl(tile1.ts, 16, 1))
89+
>C : Symbol(C, Decl(tile1.ts, 18, 32))
90+
91+
// Must declare a compatible-ish index signature or else
92+
// we won't correctly implement ClassComponent.
93+
[_: number]: unknown;
94+
>_ : Symbol(_, Decl(tile1.ts, 24, 2))
95+
}
96+
97+
const test8: ClassComponent<any> = new C();
98+
>test8 : Symbol(test8, Decl(tile1.ts, 27, 5))
99+
>ClassComponent : Symbol(ClassComponent, Decl(tile1.ts, 11, 1))
100+
>C : Symbol(C, Decl(tile1.ts, 18, 32))
101+
102+
=== tests/cases/compiler/file1.js ===
103+
/** @type {ClassComponent<any>} */
104+
const test9 = new C();
105+
>test9 : Symbol(test9, Decl(file1.js, 1, 5))
106+
>C : Symbol(C, Decl(tile1.ts, 18, 32))
107+
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
=== tests/cases/compiler/tile1.ts ===
2+
interface Lifecycle<Attrs, State extends Lifecycle<Attrs, State>> {
3+
oninit?(vnode: Vnode<Attrs, State>): number;
4+
>oninit : ((vnode: Vnode<Attrs, State>) => number) | undefined
5+
>vnode : Vnode<Attrs, State>
6+
7+
[_: number]: any;
8+
>_ : number
9+
}
10+
11+
interface Vnode<Attrs, State extends Lifecycle<Attrs, State>> {
12+
tag: Component<Attrs, State>;
13+
>tag : Component<Attrs, State>
14+
}
15+
16+
interface Component<Attrs, State extends Lifecycle<Attrs, State>> {
17+
view(this: State, vnode: Vnode<Attrs, State>): number;
18+
>view : (this: State, vnode: Vnode<Attrs, State>) => number
19+
>this : State
20+
>vnode : Vnode<Attrs, State>
21+
}
22+
23+
interface ClassComponent<A> extends Lifecycle<A, ClassComponent<A>> {
24+
oninit?(vnode: Vnode<A, this>): number;
25+
>oninit : ((vnode: Vnode<A, this>) => number) | undefined
26+
>vnode : Vnode<A, this>
27+
28+
view(vnode: Vnode<A, this>): number;
29+
>view : (vnode: Vnode<A, this>) => number
30+
>vnode : Vnode<A, this>
31+
}
32+
33+
interface MyAttrs { id: number }
34+
>id : number
35+
36+
class C implements ClassComponent<MyAttrs> {
37+
>C : C
38+
39+
view(v: Vnode<MyAttrs, C>) { return 0; }
40+
>view : (v: Vnode<MyAttrs, C>) => number
41+
>v : Vnode<MyAttrs, C>
42+
>0 : 0
43+
44+
// Must declare a compatible-ish index signature or else
45+
// we won't correctly implement ClassComponent.
46+
[_: number]: unknown;
47+
>_ : number
48+
}
49+
50+
const test8: ClassComponent<any> = new C();
51+
>test8 : ClassComponent<any>
52+
>new C() : C
53+
>C : typeof C
54+
55+
=== tests/cases/compiler/file1.js ===
56+
/** @type {ClassComponent<any>} */
57+
const test9 = new C();
58+
>test9 : ClassComponent<any>
59+
>new C() : C
60+
>C : typeof C
61+

0 commit comments

Comments
 (0)