* fix for tw2178. When a ^ or . follows a procsym then the procsym

needs to be called
This commit is contained in:
peter 2002-11-26 22:58:24 +00:00
parent 6c097b4546
commit 2e692659df

View File

@ -640,9 +640,8 @@ implementation
end end
else else
begin begin
if token=_LKLAMMER then if try_to_consume(_LKLAMMER) then
begin begin
consume(_LKLAMMER);
para:=parse_paras(false,false); para:=parse_paras(false,false);
consume(_RKLAMMER); consume(_RKLAMMER);
end; end;
@ -898,7 +897,7 @@ implementation
procsym: procsym:
begin begin
do_proc_call(sym,sym.owner, do_proc_call(sym,sym.owner,
getaddr or (getaddr and not(token in [_CARET,_POINT])) or
(assigned(getprocvardef) and (assigned(getprocvardef) and
((block_type=bt_const) or ((block_type=bt_const) or
((m_tp_procvar in aktmodeswitches) and ((m_tp_procvar in aktmodeswitches) and
@ -1235,7 +1234,7 @@ implementation
assigned(aktprocsym) and assigned(aktprocsym) and
(po_classmethod in aktprocdef.procoptions); (po_classmethod in aktprocdef.procoptions);
do_proc_call(srsym,srsymtable, do_proc_call(srsym,srsymtable,
getaddr or (getaddr and not(token in [_CARET,_POINT])) or
(assigned(getprocvardef) and (assigned(getprocvardef) and
((block_type=bt_const) or ((block_type=bt_const) or
((m_tp_procvar in aktmodeswitches) and ((m_tp_procvar in aktmodeswitches) and
@ -1906,19 +1905,23 @@ implementation
consume(_KLAMMERAFFE); consume(_KLAMMERAFFE);
got_addrn:=true; got_addrn:=true;
{ support both @<x> and @(<x>) } { support both @<x> and @(<x>) }
if token=_LKLAMMER then if try_to_consume(_LKLAMMER) then
begin begin
consume(_LKLAMMER);
p1:=factor(true); p1:=factor(true);
consume(_RKLAMMER);
if token in [_CARET,_POINT,_LECKKLAMMER] then if token in [_CARET,_POINT,_LECKKLAMMER] then
begin begin
again:=true; again:=true;
postfixoperators(p1,again); postfixoperators(p1,again);
end; end;
consume(_RKLAMMER);
end end
else else
p1:=factor(true); p1:=factor(true);
if token in [_CARET,_POINT,_LECKKLAMMER] then
begin
again:=true;
postfixoperators(p1,again);
end;
got_addrn:=false; got_addrn:=false;
p1:=caddrnode.create(p1); p1:=caddrnode.create(p1);
if assigned(getprocvardef) and if assigned(getprocvardef) and
@ -2261,7 +2264,11 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.92 2002-11-25 17:43:22 peter Revision 1.93 2002-11-26 22:58:24 peter
* fix for tw2178. When a ^ or . follows a procsym then the procsym
needs to be called
Revision 1.92 2002/11/25 17:43:22 peter
* splitted defbase in defutil,symutil,defcmp * splitted defbase in defutil,symutil,defcmp
* merged isconvertable and is_equal into compare_defs(_ext) * merged isconvertable and is_equal into compare_defs(_ext)
* made operator search faster by walking the list only once * made operator search faster by walking the list only once