pastojs: fixed create TGUID object literal

git-svn-id: trunk@48889 -
This commit is contained in:
Mattias Gaertner 2021-03-06 21:34:45 +00:00
parent d7a45c646e
commit bb83bb4203

View File

@ -20520,34 +20520,51 @@ function TPasToJSConverter.CreateGUIDObjLit(aTGUIDRecord: TPasRecordType;
const GUID: TGUID; PosEl: TPasElement; AContext: TConvertContext
): TJSObjectLiteral;
var
i: integer;
Members: TFPList;
function GetMember(const aName: string): TPasElement;
begin
while i<Members.Count do
begin
Result:=TPasElement(Members[i]);
inc(i);
if (Result is TPasVariable) then
if SameText(Result.Name,aName) then
exit
else
RaiseInconsistency(20180415094721,PosEl);
end;
RaiseInconsistency(20210306223031,PosEl);
end;
var
PropEl: TJSObjectLiteralElement;
MemberEl: TPasElement;
ArrLit: TJSArrayLiteral;
i: Integer;
begin
Members:=aTGUIDRecord.Members;
Result:=TJSObjectLiteral(CreateElement(TJSObjectLiteral,PosEl));
i:=0;
// D1: 0x12345678
MemberEl:=GetMember('D1');
PropEl:=Result.Elements.AddElement;
MemberEl:=TPasElement(Members[0]);
if not SameText(MemberEl.Name,'D1') then
RaiseInconsistency(20180415094721,PosEl);
PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D1,8);
// D2: 0x1234
MemberEl:=GetMember('D2');
PropEl:=Result.Elements.AddElement;
MemberEl:=TPasElement(Members[1]);
PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D2,4);
// D3: 0x1234
MemberEl:=GetMember('D3');
PropEl:=Result.Elements.AddElement;
MemberEl:=TPasElement(Members[2]);
PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D3,4);
// D4: [0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12]
MemberEl:=GetMember('D4');
PropEl:=Result.Elements.AddElement;
MemberEl:=TPasElement(Members[3]);
PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
ArrLit:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,PosEl));
PropEl.Expr:=ArrLit;