mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 19:48:01 +02:00
Merge branch 'RecordInfoRTTI' into 'main'
Generated record info to allow creation of a record by RTTI information. See merge request freepascal.org/fpc/source!573
This commit is contained in:
commit
849ab7526c
@ -19043,6 +19043,7 @@ var
|
|||||||
ObjLit: TJSObjectLiteral;
|
ObjLit: TJSObjectLiteral;
|
||||||
Call: TJSCallExpression;
|
Call: TJSCallExpression;
|
||||||
HasRTTIMembers: Boolean;
|
HasRTTIMembers: Boolean;
|
||||||
|
RecordInfo: TJSObjectLiteralElement;
|
||||||
begin
|
begin
|
||||||
// module.$rtti.$Record("typename",{});
|
// module.$rtti.$Record("typename",{});
|
||||||
Call:=CreateRTTINewType(El,GetBIName(pbifnRTTINewRecord),false,FuncContext,ObjLit);
|
Call:=CreateRTTINewType(El,GetBIName(pbifnRTTINewRecord),false,FuncContext,ObjLit);
|
||||||
@ -19054,7 +19055,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
HasRTTIMembers:=CreateRTTIMembers(El,Src,FuncContext,MembersSrc,MembersFuncContext,Call,false);
|
HasRTTIMembers:=CreateRTTIMembers(El,Src,FuncContext,MembersSrc,MembersFuncContext,Call,false);
|
||||||
if not HasRTTIMembers then
|
if HasRTTIMembers then
|
||||||
|
begin
|
||||||
|
RecordInfo := ObjLit.Elements.AddElement;
|
||||||
|
RecordInfo.Name := GetBIName(pbivnPtrRecord);
|
||||||
|
RecordInfo.Expr := CreatePrimitiveDotExpr('this', El);
|
||||||
|
end
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
// no published members, add "module.$rtti.$Record..."
|
// no published members, add "module.$rtti.$Record..."
|
||||||
if Src=MembersSrc then
|
if Src=MembersSrc then
|
||||||
|
Loading…
Reference in New Issue
Block a user