pastojs: fixed create TGUID object literal

git-svn-id: trunk@48889 -
(cherry picked from commit bb83bb4203)
This commit is contained in:
Mattias Gaertner 2021-03-06 21:34:45 +00:00 committed by Florian Klämpfl
parent 68fcf19ed2
commit 01439291c2

View File

@ -20520,34 +20520,51 @@ function TPasToJSConverter.CreateGUIDObjLit(aTGUIDRecord: TPasRecordType;
const GUID: TGUID; PosEl: TPasElement; AContext: TConvertContext const GUID: TGUID; PosEl: TPasElement; AContext: TConvertContext
): TJSObjectLiteral; ): TJSObjectLiteral;
var var
i: integer;
Members: TFPList; 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; PropEl: TJSObjectLiteralElement;
MemberEl: TPasElement; MemberEl: TPasElement;
ArrLit: TJSArrayLiteral; ArrLit: TJSArrayLiteral;
i: Integer;
begin begin
Members:=aTGUIDRecord.Members; Members:=aTGUIDRecord.Members;
Result:=TJSObjectLiteral(CreateElement(TJSObjectLiteral,PosEl)); Result:=TJSObjectLiteral(CreateElement(TJSObjectLiteral,PosEl));
i:=0;
// D1: 0x12345678 // D1: 0x12345678
MemberEl:=GetMember('D1');
PropEl:=Result.Elements.AddElement; 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.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D1,8); PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D1,8);
// D2: 0x1234 // D2: 0x1234
MemberEl:=GetMember('D2');
PropEl:=Result.Elements.AddElement; PropEl:=Result.Elements.AddElement;
MemberEl:=TPasElement(Members[1]);
PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext)); PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D2,4); PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D2,4);
// D3: 0x1234 // D3: 0x1234
MemberEl:=GetMember('D3');
PropEl:=Result.Elements.AddElement; PropEl:=Result.Elements.AddElement;
MemberEl:=TPasElement(Members[2]);
PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext)); PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D3,4); PropEl.Expr:=CreateLiteralHexNumber(PosEl,GUID.D3,4);
// D4: [0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12] // D4: [0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12]
MemberEl:=GetMember('D4');
PropEl:=Result.Elements.AddElement; PropEl:=Result.Elements.AddElement;
MemberEl:=TPasElement(Members[3]);
PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext)); PropEl.Name:=TJSString(TransformElToJSName(MemberEl,AContext));
ArrLit:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,PosEl)); ArrLit:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,PosEl));
PropEl.Expr:=ArrLit; PropEl.Expr:=ArrLit;