mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 09:28:19 +02:00
pastojs: fixed create TGUID object literal
git-svn-id: trunk@48889 -
This commit is contained in:
parent
d7a45c646e
commit
bb83bb4203
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user