* bug0147 fixed

This commit is contained in:
florian 1998-07-21 11:16:25 +00:00
parent 5b50aa04b7
commit b47f848f8d

View File

@ -405,43 +405,43 @@ unit ptconst;
getsym(pattern,true); getsym(pattern,true);
consume(ID); consume(ID);
if srsym^.typ=unitsym then if srsym^.typ=unitsym then
begin begin
consume(POINT); consume(POINT);
getsymonlyin(punitsym(srsym)^.unitsymtable,pattern); getsymonlyin(punitsym(srsym)^.unitsymtable,pattern);
consume(ID); consume(ID);
end; end;
if srsym^.typ<>procsym then if srsym^.typ<>procsym then
Message(cg_e_illegal_expression) Message(cg_e_illegal_expression)
else else
begin begin
pd:=pprocsym(srsym)^.definition; pd:=pprocsym(srsym)^.definition;
if assigned(pd^.nextoverloaded) then if assigned(pd^.nextoverloaded) then
Message(parser_e_no_overloaded_procvars); Message(parser_e_no_overloaded_procvars);
if not((pprocvardef(def)^.options=pd^.options)) or if not((pprocvardef(def)^.options=pd^.options)) or
not(is_equal(pprocvardef(def)^.retdef,pd^.retdef)) then not(is_equal(pprocvardef(def)^.retdef,pd^.retdef)) then
Message(sym_e_type_mismatch) Message(sym_e_type_mismatch)
else else
begin begin
hp1:=pprocvardef(def)^.para1; hp1:=pprocvardef(def)^.para1;
hp2:=pd^.para1; hp2:=pd^.para1;
while assigned(hp1) and assigned(hp2) do while assigned(hp1) and assigned(hp2) do
begin begin
if not(is_equal(hp1^.data,hp2^.data)) or if not(is_equal(hp1^.data,hp2^.data)) or
not(hp1^.paratyp=hp2^.paratyp) then not(hp1^.paratyp=hp2^.paratyp) then
begin begin
Message(sym_e_type_mismatch); Message(sym_e_type_mismatch);
break; break;
end; end;
hp1:=hp1^.next; hp1:=hp1^.next;
hp2:=hp2^.next; hp2:=hp2^.next;
end; end;
if not((hp1=nil) and (hp2=nil)) then if not((hp1=nil) and (hp2=nil)) then
Message(sym_e_type_mismatch); Message(sym_e_type_mismatch);
end; end;
datasegment^.concat(new(pai_const,init_symbol(strpnew(pd^.mangledname)))); datasegment^.concat(new(pai_const,init_symbol(strpnew(pd^.mangledname))));
if pd^.owner^.symtabletype=unitsymtable then if pd^.owner^.symtabletype=unitsymtable then
concat_external(pd^.mangledname,EXT_NEAR); concat_external(pd^.mangledname,EXT_NEAR);
end; end;
end; end;
{ reads a typed constant record } { reads a typed constant record }
recorddef: recorddef:
@ -492,7 +492,10 @@ unit ptconst;
end. end.
{ {
$Log$ $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 * hex constants in numeric char (#$54#$43 ...) are now allowed
* there was a bug in record_var_dec which prevents the used * there was a bug in record_var_dec which prevents the used
of nested variant records (for example drivers.tevent of tv) of nested variant records (for example drivers.tevent of tv)