mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 21:11:23 +02:00
pastojs: fixed create TGUID object literal
git-svn-id: trunk@48889 -
(cherry picked from commit bb83bb4203
)
This commit is contained in:
parent
68fcf19ed2
commit
01439291c2
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user