diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index 384f940e04..f931f6c38d 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -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;