File tree Expand file tree Collapse file tree 7 files changed +53
-6
lines changed
Expand file tree Collapse file tree 7 files changed +53
-6
lines changed Original file line number Diff line number Diff line change @@ -417,7 +417,7 @@ var LibraryEmbind = {
417417 ' delete(): void;\n' ,
418418 ' deleteLater(): this;\n' ,
419419 ' isDeleted(): boolean;\n' ,
420- ' clone(): this;\n' ,
420+ ' clone(): ThisType< this> ;\n' ,
421421 '}\n' ,
422422 ) ;
423423 }
Original file line number Diff line number Diff line change @@ -39,6 +39,13 @@ class Foo {
3939 void process (const Test& input) {}
4040};
4141
42+ struct Override {
43+ Override clone () const {
44+ Override o;
45+ return o;
46+ }
47+ };
48+
4249Test class_returning_fn () { return Test (); }
4350
4451std::unique_ptr<Test> class_unique_ptr_returning_fn () {
@@ -251,6 +258,11 @@ EMSCRIPTEN_BINDINGS(Test) {
251258 .function (" invoke" , &Interface::invoke, pure_virtual ())
252259 .allow_subclass <InterfaceWrapper>(" InterfaceWrapper" )
253260 ;
261+
262+ // Override ClassHandle's clone method.
263+ class_<Override>(" Override" )
264+ .constructor ().
265+ function (" clone" , &Override::clone);
254266}
255267
256268int Test::static_property = 42 ;
Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ export interface ClassHandle {
2222 delete ( ) : void ;
2323 deleteLater ( ) : this;
2424 isDeleted ( ) : boolean ;
25- clone ( ) : this;
25+ clone ( ) : ThisType < this> ;
2626}
2727export interface Test extends ClassHandle {
2828 x : number ;
@@ -100,6 +100,10 @@ export interface InterfaceWrapper extends Interface {
100100 notifyOnDestruction ( ) : void ;
101101}
102102
103+ export interface Override extends ClassHandle {
104+ clone ( ) : Override ;
105+ }
106+
103107export type ValArr = [ number , number , number ] ;
104108
105109export type ValObj = {
@@ -150,6 +154,9 @@ interface EmbindModule {
150154 extend ( _0 : EmbindString , _1 : any ) : any ;
151155 } ;
152156 InterfaceWrapper : { } ;
157+ Override : {
158+ new ( ) : Override ;
159+ } ;
153160 a_bool : boolean ;
154161 an_int : number ;
155162 optional_test ( _0 ?: Foo ) : number | undefined ;
Original file line number Diff line number Diff line change @@ -31,7 +31,7 @@ export interface ClassHandle {
3131 delete ( ) : void ;
3232 deleteLater ( ) : this;
3333 isDeleted ( ) : boolean ;
34- clone ( ) : this;
34+ clone ( ) : ThisType < this> ;
3535}
3636export interface Test extends ClassHandle {
3737 x : number ;
@@ -109,6 +109,10 @@ export interface InterfaceWrapper extends Interface {
109109 notifyOnDestruction ( ) : void ;
110110}
111111
112+ export interface Override extends ClassHandle {
113+ clone ( ) : Override ;
114+ }
115+
112116export type ValArr = [ number , number , number ] ;
113117
114118export type ValObj = {
@@ -159,6 +163,9 @@ interface EmbindModule {
159163 extend ( _0 : EmbindString , _1 : any ) : any ;
160164 } ;
161165 InterfaceWrapper : { } ;
166+ Override : {
167+ new ( ) : Override ;
168+ } ;
162169 a_bool : boolean ;
163170 an_int : number ;
164171 optional_test ( _0 ?: Foo ) : number | undefined ;
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ export interface ClassHandle {
88 delete ( ) : void ;
99 deleteLater ( ) : this;
1010 isDeleted ( ) : boolean ;
11- clone ( ) : this;
11+ clone ( ) : ThisType < this> ;
1212}
1313export interface Test extends ClassHandle {
1414 x : number ;
@@ -86,6 +86,10 @@ export interface InterfaceWrapper extends Interface {
8686 notifyOnDestruction ( ) : void ;
8787}
8888
89+ export interface Override extends ClassHandle {
90+ clone ( ) : Override ;
91+ }
92+
8993export type ValArr = [ number , number , number ] ;
9094
9195export type ValObj = {
@@ -136,6 +140,9 @@ interface EmbindModule {
136140 extend ( _0 : EmbindString , _1 : any ) : any ;
137141 } ;
138142 InterfaceWrapper : { } ;
143+ Override : {
144+ new ( ) : Override ;
145+ } ;
139146 a_bool : boolean ;
140147 an_int : number ;
141148 optional_test ( _0 ?: Foo ) : number | undefined ;
Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ export interface ClassHandle {
2222 delete ( ) : void ;
2323 deleteLater ( ) : this;
2424 isDeleted ( ) : boolean ;
25- clone ( ) : this;
25+ clone ( ) : ThisType < this> ;
2626}
2727export interface Test extends ClassHandle {
2828 x : number ;
@@ -100,6 +100,10 @@ export interface InterfaceWrapper extends Interface {
100100 notifyOnDestruction ( ) : void ;
101101}
102102
103+ export interface Override extends ClassHandle {
104+ clone ( ) : Override ;
105+ }
106+
103107export type ValArr = [ number , number , number ] ;
104108
105109export type ValObj = {
@@ -150,6 +154,9 @@ interface EmbindModule {
150154 extend ( _0 : EmbindString , _1 : any ) : any ;
151155 } ;
152156 InterfaceWrapper : { } ;
157+ Override : {
158+ new ( ) : Override ;
159+ } ;
153160 a_bool : boolean ;
154161 an_int : number ;
155162 optional_test ( _0 ?: Foo ) : number | undefined ;
Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ export interface ClassHandle {
2222 delete ( ) : void ;
2323 deleteLater ( ) : this;
2424 isDeleted ( ) : boolean ;
25- clone ( ) : this;
25+ clone ( ) : ThisType < this> ;
2626}
2727export interface Test extends ClassHandle {
2828 x : number ;
@@ -100,6 +100,10 @@ export interface InterfaceWrapper extends Interface {
100100 notifyOnDestruction ( ) : void ;
101101}
102102
103+ export interface Override extends ClassHandle {
104+ clone ( ) : Override ;
105+ }
106+
103107export type ValArr = [ number , number , number ] ;
104108
105109export type ValObj = {
@@ -150,6 +154,9 @@ interface EmbindModule {
150154 extend ( _0 : EmbindString , _1 : any ) : any ;
151155 } ;
152156 InterfaceWrapper : { } ;
157+ Override : {
158+ new ( ) : Override ;
159+ } ;
153160 a_bool : boolean ;
154161 an_int : number ;
155162 optional_test ( _0 ?: Foo ) : number | undefined ;
You can’t perform that action at this time.
0 commit comments