Browse Source

webidl: wasmjob: setter for JSValue

mattias 3 years ago
parent
commit
1173a6b2e9
1 changed files with 11 additions and 3 deletions
  1. 11 3
      packages/webidl/src/webidltopas.pp

+ 11 - 3
packages/webidl/src/webidltopas.pp

@@ -223,7 +223,6 @@ type
   end;
   end;
 
 
 type
 type
-
   TJOB_JSValueKind = (
   TJOB_JSValueKind = (
     jjvkUndefined,
     jjvkUndefined,
     jjvkBoolean,
     jjvkBoolean,
@@ -389,6 +388,8 @@ var
   FuncName, TypeName, aClassName, Code, ReadFuncName: String;
   FuncName, TypeName, aClassName, Code, ReadFuncName: String;
 begin
 begin
   Result:=true;
   Result:=true;
+  if Attr.AttributeType=nil then
+    exit;
   FuncName:=GetterPrefix+GetName(Attr);
   FuncName:=GetterPrefix+GetName(Attr);
   TypeName:=GetTypeName(Attr.AttributeType);
   TypeName:=GetTypeName(Attr.AttributeType);
   AddLn('Function '+FuncName+': '+TypeName+';');
   AddLn('Function '+FuncName+': '+TypeName+';');
@@ -408,7 +409,7 @@ begin
   'Single',
   'Single',
   'Double': ReadFuncName:='ReadJSPropertyDouble';
   'Double': ReadFuncName:='ReadJSPropertyDouble';
   'UnicodeString': ReadFuncName:='ReadJSPropertyUnicodeString';
   'UnicodeString': ReadFuncName:='ReadJSPropertyUnicodeString';
-  //'JSValue':
+  'TJOB_JSValue': ReadFuncName:='ReadJSPropertyValue';
   else
   else
     raise EConvertError.Create('not yet implemented: Getter '+Typename);
     raise EConvertError.Create('not yet implemented: Getter '+Typename);
   end;
   end;
@@ -428,6 +429,8 @@ var
 begin
 begin
   if aoReadOnly in Attr.Options then
   if aoReadOnly in Attr.Options then
     exit(false);
     exit(false);
+  if Attr.AttributeType=nil then
+    exit;
 
 
   Result:=true;
   Result:=true;
   FuncName:=SetterPrefix+GetName(Attr);
   FuncName:=SetterPrefix+GetName(Attr);
@@ -449,7 +452,7 @@ begin
   'Single',
   'Single',
   'Double': WriteFuncName:='WriteJSPropertyDouble';
   'Double': WriteFuncName:='WriteJSPropertyDouble';
   'UnicodeString': WriteFuncName:='WriteJSPropertyUnicodeString';
   'UnicodeString': WriteFuncName:='WriteJSPropertyUnicodeString';
-  //'JSValue':
+  'TJOB_JSValue': WriteFuncName:='WriteJSPropertyValue';
   else
   else
     raise EConvertError.Create('not yet implemented: Setter '+Typename);
     raise EConvertError.Create('not yet implemented: Setter '+Typename);
   end;
   end;
@@ -467,6 +470,11 @@ function TWebIDLToPasWasmJob.WriteProperty(Attr: TIDLAttributeDefinition
 var
 var
   PropName, TypeName, Code: String;
   PropName, TypeName, Code: String;
 begin
 begin
+  if Attr.AttributeType=nil then
+    begin
+    AddLn('skipping field without type: "'+Attr.Name+'"');
+    exit;
+    end;
   PropName:=GetName(Attr);
   PropName:=GetName(Attr);
   TypeName:=GetTypeName(Attr.AttributeType);
   TypeName:=GetTypeName(Attr.AttributeType);
   Code:='Property '+PropName+': '+TypeName+' read '+GetterPrefix+PropName;
   Code:='Property '+PropName+': '+TypeName+' read '+GetterPrefix+PropName;