* procvar is not compared in addrn

This commit is contained in:
peter 2003-04-23 10:10:54 +00:00
parent 4290586968
commit 18b1a27d2c
2 changed files with 25 additions and 6 deletions

View File

@ -378,10 +378,14 @@ implementation
begin begin
if Tprocsym(symtableentry).procdef_count>1 then if Tprocsym(symtableentry).procdef_count>1 then
CGMessage(parser_e_no_overloaded_procvars); CGMessage(parser_e_no_overloaded_procvars);
resulttype.setdef(tprocsym(symtableentry).first_procdef); procdef:=tprocsym(symtableentry).first_procdef;
end end;
{ Delphi returns Pointer as type }
if not(m_tp_procvar in aktmodeswitches) then
resulttype.setdef(procdef)
else else
resulttype.setdef(procdef); resulttype:=voidpointertype;
{ process methodpointer } { process methodpointer }
if assigned(left) then if assigned(left) then
@ -474,6 +478,7 @@ implementation
{ method pointer ? } { method pointer ? }
if assigned(left) then if assigned(left) then
begin begin
expectloc:=LOC_CREFERENCE;
firstpass(left); firstpass(left);
registers32:=max(registers32,left.registers32); registers32:=max(registers32,left.registers32);
registersfpu:=max(registersfpu,left.registersfpu); registersfpu:=max(registersfpu,left.registersfpu);
@ -1259,7 +1264,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.84 2003-04-22 23:50:23 peter Revision 1.85 2003-04-23 10:10:54 peter
* procvar is not compared in addrn
Revision 1.84 2003/04/22 23:50:23 peter
* firstpass uses expectloc * firstpass uses expectloc
* checks if there are differences between the expectloc and * checks if there are differences between the expectloc and
location.loc from secondpass in EXTDEBUG location.loc from secondpass in EXTDEBUG

View File

@ -401,10 +401,18 @@ implementation
if not(m_tp_procvar in aktmodeswitches) then if not(m_tp_procvar in aktmodeswitches) then
begin begin
if assigned(getprocvardef) then if assigned(getprocvardef) then
hp3:=getprocvardef begin
hp3:=tprocsym(tloadnode(left).symtableentry).search_procdef_byprocvardef(getprocvardef);
if not assigned(hp3) then
begin
CGMessage2(type_e_incompatible_types,tprocsym(tloadnode(left).symtableentry).first_procdef.typename,getprocvardef.typename);
exit;
end;
end
else else
hp3:=tabstractprocdef(tprocsym(tloadnode(left).symtableentry).first_procdef); hp3:=tabstractprocdef(tprocsym(tloadnode(left).symtableentry).first_procdef);
{ create procvardef } { create procvardef }
resulttype.setdef(tprocvardef.create); resulttype.setdef(tprocvardef.create);
tprocvardef(resulttype.def).proctypeoption:=hp3.proctypeoption; tprocvardef(resulttype.def).proctypeoption:=hp3.proctypeoption;
@ -1052,7 +1060,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.48 2003-04-22 23:50:23 peter Revision 1.49 2003-04-23 10:10:54 peter
* procvar is not compared in addrn
Revision 1.48 2003/04/22 23:50:23 peter
* firstpass uses expectloc * firstpass uses expectloc
* checks if there are differences between the expectloc and * checks if there are differences between the expectloc and
location.loc from secondpass in EXTDEBUG location.loc from secondpass in EXTDEBUG