mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-15 17:39:25 +02:00
* bug0147 fixed
This commit is contained in:
parent
5b50aa04b7
commit
b47f848f8d
@ -405,43 +405,43 @@ unit ptconst;
|
||||
getsym(pattern,true);
|
||||
consume(ID);
|
||||
if srsym^.typ=unitsym then
|
||||
begin
|
||||
consume(POINT);
|
||||
getsymonlyin(punitsym(srsym)^.unitsymtable,pattern);
|
||||
consume(ID);
|
||||
end;
|
||||
if srsym^.typ<>procsym then
|
||||
Message(cg_e_illegal_expression)
|
||||
else
|
||||
begin
|
||||
pd:=pprocsym(srsym)^.definition;
|
||||
if assigned(pd^.nextoverloaded) then
|
||||
Message(parser_e_no_overloaded_procvars);
|
||||
if not((pprocvardef(def)^.options=pd^.options)) or
|
||||
not(is_equal(pprocvardef(def)^.retdef,pd^.retdef)) then
|
||||
Message(sym_e_type_mismatch)
|
||||
else
|
||||
begin
|
||||
hp1:=pprocvardef(def)^.para1;
|
||||
hp2:=pd^.para1;
|
||||
while assigned(hp1) and assigned(hp2) do
|
||||
begin
|
||||
if not(is_equal(hp1^.data,hp2^.data)) or
|
||||
not(hp1^.paratyp=hp2^.paratyp) then
|
||||
begin
|
||||
Message(sym_e_type_mismatch);
|
||||
break;
|
||||
end;
|
||||
hp1:=hp1^.next;
|
||||
hp2:=hp2^.next;
|
||||
end;
|
||||
if not((hp1=nil) and (hp2=nil)) then
|
||||
Message(sym_e_type_mismatch);
|
||||
end;
|
||||
datasegment^.concat(new(pai_const,init_symbol(strpnew(pd^.mangledname))));
|
||||
if pd^.owner^.symtabletype=unitsymtable then
|
||||
concat_external(pd^.mangledname,EXT_NEAR);
|
||||
end;
|
||||
begin
|
||||
consume(POINT);
|
||||
getsymonlyin(punitsym(srsym)^.unitsymtable,pattern);
|
||||
consume(ID);
|
||||
end;
|
||||
if srsym^.typ<>procsym then
|
||||
Message(cg_e_illegal_expression)
|
||||
else
|
||||
begin
|
||||
pd:=pprocsym(srsym)^.definition;
|
||||
if assigned(pd^.nextoverloaded) then
|
||||
Message(parser_e_no_overloaded_procvars);
|
||||
if not((pprocvardef(def)^.options=pd^.options)) or
|
||||
not(is_equal(pprocvardef(def)^.retdef,pd^.retdef)) then
|
||||
Message(sym_e_type_mismatch)
|
||||
else
|
||||
begin
|
||||
hp1:=pprocvardef(def)^.para1;
|
||||
hp2:=pd^.para1;
|
||||
while assigned(hp1) and assigned(hp2) do
|
||||
begin
|
||||
if not(is_equal(hp1^.data,hp2^.data)) or
|
||||
not(hp1^.paratyp=hp2^.paratyp) then
|
||||
begin
|
||||
Message(sym_e_type_mismatch);
|
||||
break;
|
||||
end;
|
||||
hp1:=hp1^.next;
|
||||
hp2:=hp2^.next;
|
||||
end;
|
||||
if not((hp1=nil) and (hp2=nil)) then
|
||||
Message(sym_e_type_mismatch);
|
||||
end;
|
||||
datasegment^.concat(new(pai_const,init_symbol(strpnew(pd^.mangledname))));
|
||||
if pd^.owner^.symtabletype=unitsymtable then
|
||||
concat_external(pd^.mangledname,EXT_NEAR);
|
||||
end;
|
||||
end;
|
||||
{ reads a typed constant record }
|
||||
recorddef:
|
||||
@ -492,7 +492,10 @@ unit ptconst;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 1998-07-20 22:17:16 florian
|
||||
Revision 1.10 1998-07-21 11:16:25 florian
|
||||
* bug0147 fixed
|
||||
|
||||
Revision 1.9 1998/07/20 22:17:16 florian
|
||||
* hex constants in numeric char (#$54#$43 ...) are now allowed
|
||||
* there was a bug in record_var_dec which prevents the used
|
||||
of nested variant records (for example drivers.tevent of tv)
|
||||
|
Loading…
Reference in New Issue
Block a user