diff options
author | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-03-06 21:34:45 +0000 |
---|---|---|
committer | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-03-06 21:34:45 +0000 |
commit | becb5c83fef87d60b801b79cb608cb0e90f71f97 (patch) | |
tree | 67050f90ac75cac6f12e1b9fa343d72190c80b7c | |
parent | 91e7ac11fc5d52df7169d62b4743cadfeb6d07ce (diff) | |
download | fpc-becb5c83fef87d60b801b79cb608cb0e90f71f97.tar.gz |
pastojs: fixed create TGUID object literal
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@48889 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/pastojs/src/fppas2js.pp | 31 |
1 files changed, 24 insertions, 7 deletions
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; |