diff --git a/compiler/ncal.pas b/compiler/ncal.pas index d8e1ec66a1..e2bed81e3a 100644 --- a/compiler/ncal.pas +++ b/compiler/ncal.pas @@ -428,6 +428,7 @@ interface len : longint; st : psymtable; loadconst : boolean; + srsym : psym; begin if assigned(hightree) then exit; @@ -440,7 +441,7 @@ interface is_array_of_const(left.resulttype) then begin st:=tloadnode(left).symtable; - getsymonlyin(st,'high'+pvarsym(tloadnode(left).symtableentry)^.name); + srsym:=searchsymonlyin(st,'high'+pvarsym(tloadnode(left).symtableentry)^.name); hightree:=genloadnode(pvarsym(srsym),st); loadconst:=false; end @@ -458,7 +459,7 @@ interface if is_open_string(left.resulttype) then begin st:=tloadnode(left).symtable; - getsymonlyin(st,'high'+pvarsym(tloadnode(left).symtableentry)^.name); + srsym:=searchsymonlyin(st,'high'+pvarsym(tloadnode(left).symtableentry)^.name); hightree:=genloadnode(pvarsym(srsym),st); loadconst:=false; end @@ -647,6 +648,7 @@ interface is_const : boolean; i : longint; bestord : porddef; + srsym : psym; begin pass_1:=nil; { release registers! } @@ -754,7 +756,7 @@ interface while assigned(symt^.next) and not assigned(srsym) do begin symt:=symt^.next; - getsymonlyin(symt,actprocsym^.name); + srsym:=searchsymonlyin(symt,actprocsym^.name); if assigned(srsym) then if srsym^.typ<>procsym then begin @@ -1568,7 +1570,10 @@ begin end. { $Log$ - Revision 1.23 2001-02-26 19:44:52 peter + Revision 1.24 2001-03-12 12:47:46 michael + + Patches from peter + + Revision 1.23 2001/02/26 19:44:52 peter * merged generic m68k updates from fixes branch Revision 1.22 2001/01/08 21:46:46 peter diff --git a/compiler/ninl.pas b/compiler/ninl.pas index 27cef20f9e..8d17d27e15 100644 --- a/compiler/ninl.pas +++ b/compiler/ninl.pas @@ -101,6 +101,7 @@ implementation p1,hp,hpp : tnode; ppn : tcallparanode; dummycoll: tparaitem; + srsym : psym; {$ifndef NOCOLONCHECK} frac_para,length_para : tnode; {$endif ndef NOCOLONCHECK} @@ -477,7 +478,7 @@ implementation set_varstate(left,false); if push_high_param(left.resulttype) then begin - getsymonlyin(tloadnode(left).symtable,'high'+pvarsym(tloadnode(left).symtableentry)^.name); + srsym:=searchsymonlyin(tloadnode(left).symtable,'high'+pvarsym(tloadnode(left).symtableentry)^.name); hp:=caddnode.create(addn,genloadnode(pvarsym(srsym),tloadnode(left).symtable), genordinalconstnode(1,s32bitdef)); if (left.resulttype^.deftype=arraydef) and @@ -1055,7 +1056,7 @@ implementation { firstcallparan(left,nil); already done in firstcalln } { now we know the type of buffer } - getsymonlyin(systemunit,'SETTEXTBUF'); + srsym:=searchsymonlyin(systemunit,'SETTEXTBUF'); hp:=gencallnode(pprocsym(srsym),systemunit); tcallnode(hp).left:=gencallparanode( genordinalconstnode(tcallparanode(left).left.resulttype^.size,s32bitdef),left); @@ -1337,7 +1338,7 @@ implementation if is_open_array(left.resulttype) or is_array_of_const(left.resulttype) then begin - getsymonlyin(tloadnode(left).symtable,'high'+pvarsym(tloadnode(left).symtableentry)^.name); + srsym:=searchsymonlyin(tloadnode(left).symtable,'high'+pvarsym(tloadnode(left).symtableentry)^.name); hp:=genloadnode(pvarsym(srsym),tloadnode(left).symtable); firstpass(hp); result:=hp; @@ -1363,7 +1364,7 @@ implementation begin if is_open_string(left.resulttype) then begin - getsymonlyin(tloadnode(left).symtable,'high'+pvarsym(tloadnode(left).symtableentry)^.name); + srsym:=searchsymonlyin(tloadnode(left).symtable,'high'+pvarsym(tloadnode(left).symtableentry)^.name); hp:=genloadnode(pvarsym(srsym),tloadnode(left).symtable); firstpass(hp); result:=hp; @@ -1536,7 +1537,10 @@ begin end. { $Log$ - Revision 1.29 2001-03-03 12:38:08 jonas + Revision 1.30 2001-03-12 12:47:46 michael + + Patches from peter + + Revision 1.29 2001/03/03 12:38:08 jonas * fixed low() for signed types < 64bit Revision 1.28 2001/02/26 19:44:53 peter diff --git a/compiler/ptype.pas b/compiler/ptype.pas index c62f732431..8c2b987d5d 100644 --- a/compiler/ptype.pas +++ b/compiler/ptype.pas @@ -102,12 +102,17 @@ implementation if assigned(srsym) and (srsym^.typ=unitsym) then begin - consume(_POINT); - srsym:=searchsymonlyin(punitsym(srsym)^.unitsymtable,pattern); - pos:=akttokenpos; - s:=pattern; - consume(_ID); is_unit_specific:=true; + consume(_POINT); + if srsym^.owner^.unitid=0 then + begin + srsym:=searchsymonlyin(punitsym(srsym)^.unitsymtable,pattern); + pos:=akttokenpos; + s:=pattern; + end + else + srsym:=nil; + consume(_ID); end; { are we parsing a possible forward def ? } if isforwarddef and @@ -579,7 +584,10 @@ implementation end. { $Log$ - Revision 1.18 2001-03-11 22:58:50 peter + Revision 1.19 2001-03-12 12:49:01 michael + + Patches from peter + + Revision 1.18 2001/03/11 22:58:50 peter * getsym redesign, removed the globals srsym,srsymtable Revision 1.17 2000/12/07 17:19:43 jonas