mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 18:09:30 +02:00
* fix type parsing in records
This commit is contained in:
parent
fcde2c3ffa
commit
3b771392a1
@ -133,6 +133,7 @@ implementation
|
||||
pt : tnode;
|
||||
vs,vs2 : tvarsym;
|
||||
srsym : tsym;
|
||||
oldsymtablestack,
|
||||
srsymtable : tsymtable;
|
||||
unionsymtable : trecordsymtable;
|
||||
offset : longint;
|
||||
@ -179,7 +180,17 @@ implementation
|
||||
{ this is needed for Delphi mode at least
|
||||
but should be OK for all modes !! (PM) }
|
||||
ignore_equal:=true;
|
||||
read_type(tt,'');
|
||||
if is_record or is_object then
|
||||
begin
|
||||
{ for records, don't search the recordsymtable for
|
||||
the symbols of the types }
|
||||
oldsymtablestack:=symtablestack;
|
||||
symtablestack:=symtablestack.next;
|
||||
read_type(tt,'');
|
||||
symtablestack:=oldsymtablestack;
|
||||
end
|
||||
else
|
||||
read_type(tt,'');
|
||||
{ types that use init/final are not allowed in variant parts, but
|
||||
classes are allowed }
|
||||
if (variantrecordlevel>0) and
|
||||
@ -495,7 +506,12 @@ implementation
|
||||
{ may be only a type: }
|
||||
if assigned(srsym) and (srsym.typ in [typesym,unitsym]) then
|
||||
begin
|
||||
{ for records, don't search the recordsymtable for
|
||||
the symbols of the types }
|
||||
oldsymtablestack:=symtablestack;
|
||||
symtablestack:=symtablestack.next;
|
||||
read_type(casetype,'');
|
||||
symtablestack:=oldsymtablestack;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -503,7 +519,10 @@ implementation
|
||||
consume(_COLON);
|
||||
{ for records, don't search the recordsymtable for
|
||||
the symbols of the types }
|
||||
oldsymtablestack:=symtablestack;
|
||||
symtablestack:=symtablestack.next;
|
||||
read_type(casetype,'');
|
||||
symtablestack:=oldsymtablestack;
|
||||
vs:=tvarsym.create(sorg,vs_value,casetype);
|
||||
tabstractrecordsymtable(symtablestack).insertfield(vs,true);
|
||||
end;
|
||||
@ -598,7 +617,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.52 2003-10-01 19:05:33 peter
|
||||
Revision 1.53 2003-10-02 15:12:07 peter
|
||||
* fix type parsing in records
|
||||
|
||||
Revision 1.52 2003/10/01 19:05:33 peter
|
||||
* searchsym_type to search for type definitions. It ignores
|
||||
records,objects and parameters
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user