mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 13:49:39 +02:00
* Guard against argument names that are keywords
This commit is contained in:
parent
972703ab45
commit
513a461911
@ -1350,6 +1350,8 @@ begin
|
|||||||
For I in aList do
|
For I in aList do
|
||||||
begin
|
begin
|
||||||
ArgName:=GetName(Arg);
|
ArgName:=GetName(Arg);
|
||||||
|
if IsKeyWord(ArgName) then
|
||||||
|
ArgName:=ArgName+'_';
|
||||||
ArgType:=GetResolvedType(Arg.ArgumentType,ArgTypeName,ArgResolvedTypeName);
|
ArgType:=GetResolvedType(Arg.ArgumentType,ArgTypeName,ArgResolvedTypeName);
|
||||||
ArgName:=ArgName+': '+ArgTypeName;
|
ArgName:=ArgName+': '+ArgTypeName;
|
||||||
//writeln('TBaseWebIDLToPas.GetArguments Arg="',ArgName,'" A.ArgumentType.TypeName=',Arg.ArgumentType.TypeName,' ',Def<>nil);
|
//writeln('TBaseWebIDLToPas.GetArguments Arg="',ArgName,'" A.ArgumentType.TypeName=',Arg.ArgumentType.TypeName,' ',Def<>nil);
|
||||||
|
@ -74,6 +74,7 @@ type
|
|||||||
FPasInterfacePrefix: TIDLString;
|
FPasInterfacePrefix: TIDLString;
|
||||||
FPasInterfaceSuffix: TIDLString;
|
FPasInterfaceSuffix: TIDLString;
|
||||||
FGeneratingInterface : Boolean;
|
FGeneratingInterface : Boolean;
|
||||||
|
function GetArgName(d: TIDLDefinition): string;
|
||||||
function GetFunctionSuffix(aDef: TIDLFunctionDefinition; Overloads: TFPObjectList): String;
|
function GetFunctionSuffix(aDef: TIDLFunctionDefinition; Overloads: TFPObjectList): String;
|
||||||
function GetInvokeClassName(aResultDef: TIDLDefinition; aName: TIDLString; aDef: TIDLFunctionDefinition=nil): TIDLString;
|
function GetInvokeClassName(aResultDef: TIDLDefinition; aName: TIDLString; aDef: TIDLFunctionDefinition=nil): TIDLString;
|
||||||
function GetInvokeNameFromTypeName(aTypeName: TIDLString; aType: TIDLDefinition): TIDLString;
|
function GetInvokeNameFromTypeName(aTypeName: TIDLString; aType: TIDLDefinition): TIDLString;
|
||||||
@ -515,11 +516,13 @@ end;
|
|||||||
function TWebIDLToPasWasmJob.WriteForwardClassDef(D: TIDLStructuredDefinition
|
function TWebIDLToPasWasmJob.WriteForwardClassDef(D: TIDLStructuredDefinition
|
||||||
): Boolean;
|
): Boolean;
|
||||||
begin
|
begin
|
||||||
|
if D.IsPartial then
|
||||||
|
exit;
|
||||||
if D is TIDLDictionaryDefinition then
|
if D is TIDLDictionaryDefinition then
|
||||||
AddLn(GetName(D)+' = '+JOB_JSValueTypeNames[jjvkDictionary]+';')
|
AddLn(GetName(D)+' = '+JOB_JSValueTypeNames[jjvkDictionary]+';')
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
if (not D.IsPartial) and ((D is TIDLInterfaceDefinition) or (D is TIDLNamespaceDefinition)) then
|
if ((D is TIDLInterfaceDefinition) or (D is TIDLNamespaceDefinition)) then
|
||||||
AddLn(GetPasIntfName(D)+' = interface;');
|
AddLn(GetPasIntfName(D)+' = interface;');
|
||||||
Result:=inherited WriteForwardClassDef(D);
|
Result:=inherited WriteForwardClassDef(D);
|
||||||
end;
|
end;
|
||||||
@ -535,6 +538,7 @@ begin
|
|||||||
'SmallInt',
|
'SmallInt',
|
||||||
'Word',
|
'Word',
|
||||||
'Integer': Result:='InvokeJSLongIntResult';
|
'Integer': Result:='InvokeJSLongIntResult';
|
||||||
|
'DOMHighResTimeStamp',
|
||||||
'LongWord',
|
'LongWord',
|
||||||
'Int64',
|
'Int64',
|
||||||
'QWord': Result:='InvokeJSMaxIntResult';
|
'QWord': Result:='InvokeJSMaxIntResult';
|
||||||
@ -647,6 +651,13 @@ begin
|
|||||||
Result:=Result+' // Promise<'+TIDLPromiseTypeDefDefinition(aReturnDef).ReturnType.TypeName+'>';
|
Result:=Result+' // Promise<'+TIDLPromiseTypeDefDefinition(aReturnDef).ReturnType.TypeName+'>';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TWebIDLToPasWasmJob.GetArgName(d : TIDLDefinition) : string;
|
||||||
|
begin
|
||||||
|
Result:=GetName(d);
|
||||||
|
if IsKeyWord(Result) then
|
||||||
|
Result:=Result+'_';
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TWebIDLToPasWasmJob.WriteFunctionImplementation(aParent: TIDLStructuredDefinition; aDef: TIDLFunctionDefinition);
|
procedure TWebIDLToPasWasmJob.WriteFunctionImplementation(aParent: TIDLStructuredDefinition; aDef: TIDLFunctionDefinition);
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -666,6 +677,7 @@ var
|
|||||||
ArgNames.Add(Result);
|
ArgNames.Add(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Data: TPasDataWasmJob;
|
Data: TPasDataWasmJob;
|
||||||
FuncName, Suff, Args, ProcKind, Sig, aClassName, InvokeName,
|
FuncName, Suff, Args, ProcKind, Sig, aClassName, InvokeName,
|
||||||
@ -701,7 +713,7 @@ begin
|
|||||||
ArgNames:=TStringList.Create;
|
ArgNames:=TStringList.Create;
|
||||||
try
|
try
|
||||||
for CurDef in ArgDefList do
|
for CurDef in ArgDefList do
|
||||||
ArgNames.Add(GetName(ArgDef));
|
ArgNames.Add(GetArgName(ArgDef));
|
||||||
|
|
||||||
AddLn(ProcKind+' '+aClassName+'.'+Sig);
|
AddLn(ProcKind+' '+aClassName+'.'+Sig);
|
||||||
|
|
||||||
@ -716,7 +728,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
if Args<>'' then
|
if Args<>'' then
|
||||||
Args:=Args+',';
|
Args:=Args+',';
|
||||||
ArgName:=GetName(ArgDef);
|
ArgName:=GetArgName(ArgDef);
|
||||||
ArgType:=GetResolvedType(ArgDef.ArgumentType,ArgTypeName,ArgResolvedTypeName);
|
ArgType:=GetResolvedType(ArgDef.ArgumentType,ArgTypeName,ArgResolvedTypeName);
|
||||||
//writeln('TWebIDLToPasWasmJob.WriteFunctionDefinition ',ArgType.Name,':',ArgType.ClassName,' ',ArgResolvedTypeName,' ArgType=',hexstr(ptruint(ArgType),sizeof(ptruint)*2));
|
//writeln('TWebIDLToPasWasmJob.WriteFunctionDefinition ',ArgType.Name,':',ArgType.ClassName,' ',ArgResolvedTypeName,' ArgType=',hexstr(ptruint(ArgType),sizeof(ptruint)*2));
|
||||||
if ArgType is TIDLSequenceTypeDefDefinition then
|
if ArgType is TIDLSequenceTypeDefDefinition then
|
||||||
@ -871,7 +883,6 @@ Var
|
|||||||
FD: TIDLFunctionDefinition absolute D;
|
FD: TIDLFunctionDefinition absolute D;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
for D in aList do
|
for D in aList do
|
||||||
if D is TIDLFunctionDefinition then
|
if D is TIDLFunctionDefinition then
|
||||||
begin
|
begin
|
||||||
@ -1020,6 +1031,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
AddLn(GetFunc);
|
AddLn(GetFunc);
|
||||||
|
undent;
|
||||||
AddLn('end;');
|
AddLn('end;');
|
||||||
finally
|
finally
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user