Browse Source

* Correctly create constructor definitions

Michaël Van Canneyt 1 year ago
parent
commit
23bcb38138

+ 2 - 1
packages/webidl/src/webidltowasmjob.pp

@@ -598,6 +598,7 @@ begin
     InvokeName:= 'InvokeJSObjectResult';
     ResolvedReturnTypeName:=aParent.Name;
     ReturnTypeName:=GetName(aParent);
+    InvokeClassName:=ReturnTypeName;
     exit(Nil);
     end
   else
@@ -739,7 +740,7 @@ begin
         Args:=',['+Args+']';
 
         if foConstructor in aDef.Options then
-          InvokeCode:=InvokeCode+InvokeName+'('''+ResolvedReturnTypeName+''''+Args+','+ReturnTypeName
+          InvokeCode:=InvokeCode+InvokeName+'('''+ResolvedReturnTypeName+''''+Args
         else
           InvokeCode:=InvokeCode+InvokeName+'('''+aDef.Name+''''+Args;
         if InvokeClassName<>'' then

+ 1 - 1
packages/webidl/tests/tcwebidl2wasmjob.pas

@@ -818,7 +818,7 @@ begin
   '',
   'class function TJSAttr.Create(aOptions: Integer) : TJSAttr;',
   'begin',
-  '  Result:=InvokeJSObjectResult(''Attr'',[aOptions],TJSAttr);',
+  '  Result:=InvokeJSObjectResult(''Attr'',[aOptions],TJSAttr) as TJSAttr;',
   'end;',
   '',
   'class function TJSAttr.Cast(const Intf: IJSObject): IJSAttr;',