From 0def3629cc9090320b0f9943b3e31bbede5de4ef Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Mon, 6 Oct 2014 20:53:30 +0000 Subject: [PATCH] * factored out adding a single field to a record based on a def git-svn-id: branches/hlcgllvm@28757 - --- compiler/symdef.pas | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/compiler/symdef.pas b/compiler/symdef.pas index 575a280734..2368f59a73 100644 --- a/compiler/symdef.pas +++ b/compiler/symdef.pas @@ -299,6 +299,7 @@ interface isunion : boolean; constructor create(const n:string; p:TSymtable);virtual; constructor create_global_internal(n: string; packrecords: shortint); virtual; + procedure add_field_by_def(def: tdef); procedure add_fields_from_deflist(fieldtypes: tfplist); constructor ppuload(ppufile:tcompilerppufile); destructor destroy;override; @@ -3982,17 +3983,22 @@ implementation end; + procedure trecorddef.add_field_by_def(def: tdef); + var + sym: tfieldvarsym; + begin + sym:=cfieldvarsym.create('$f'+tostr(trecordsymtable(symtable).symlist.count),vs_value,def,[]); + symtable.insert(sym); + trecordsymtable(symtable).addfield(sym,vis_hidden); + end; + + procedure trecorddef.add_fields_from_deflist(fieldtypes: tfplist); var i: longint; - sym: tfieldvarsym; begin for i:=0 to fieldtypes.count-1 do - begin - sym:=cfieldvarsym.create('$f'+tostr(i),vs_value,tdef(fieldtypes[i]),[]); - symtable.insert(sym); - trecordsymtable(symtable).addfield(sym,vis_hidden); - end; + add_field_by_def(tdef(fieldtypes[i])); end;