Browse Source

* Do not generate definition for aliased types

Michaël Van Canneyt 1 year ago
parent
commit
b40c20b53b
2 changed files with 22 additions and 2 deletions
  1. 5 2
      packages/webidl/src/webidltopas.pp
  2. 17 0
      packages/webidl/tests/tcwebidl2wasmjob.pas

+ 5 - 2
packages/webidl/src/webidltopas.pp

@@ -1267,7 +1267,10 @@ end;
 function TBaseWebIDLToPas.WriteTypeDef(aDef: TIDLTypeDefDefinition): Boolean;
 
 begin
-  Result:=True;
+  Result:=(TypeAliases.IndexOfName(aDef.Name)=-1);
+  if not Result then
+    exit;
+
   if ADef is TIDLSequenceTypeDefDefinition then
     WriteSequenceDef(aDef as TIDLSequenceTypeDefDefinition)
   else if ADef is TIDLUnionTypeDefDefinition then
@@ -1316,7 +1319,7 @@ begin
     begin
     if D is TIDLTypeDefDefinition then
       begin
-      if WriteTypeDef(TD) then
+      if WriteTypeDef(TD)  then
         Inc(Result);
       end
     else if D is TIDLFunctionDefinition then

+ 17 - 0
packages/webidl/tests/tcwebidl2wasmjob.pas

@@ -36,6 +36,7 @@ type
     // typedefs
     procedure TestWJ_Typedef_Boolean;
     procedure TestWJ_Typedef_Sequence;
+    procedure TestWJ_Typedef_Aliased;
 
     // attributes
     procedure TestWJ_IntfAttribute_Boolean;
@@ -434,6 +435,22 @@ begin
   '']);
 end;
 
+procedure TTestWebIDL2WasmJob.TestWJ_Typedef_Aliased;
+begin
+  WebIDLToPas.TypeAliases.Add('Float32List=IJSFloat32Array');
+  TestWebIDL([
+  '  typedef ([AllowShared] Float32Array or sequence<GLfloat>) Float32List;',
+  ''],
+  ['',
+  'Type',
+  '  // Forward class definitions',
+  'implementation',
+  '',
+  'end.',
+  ''
+  ]);
+end;
+
 procedure TTestWebIDL2WasmJob.TestWJ_IntfAttribute_Boolean;
 begin
   TestWebIDL([