Browse Source

+ Patches from peter

michael 24 years ago
parent
commit
fb05310d44
3 changed files with 31 additions and 14 deletions
  1. 9 4
      compiler/ncal.pas
  2. 9 5
      compiler/ninl.pas
  3. 13 5
      compiler/ptype.pas

+ 9 - 4
compiler/ncal.pas

@@ -428,6 +428,7 @@ interface
         len : longint;
         len : longint;
         st  : psymtable;
         st  : psymtable;
         loadconst : boolean;
         loadconst : boolean;
+        srsym : psym;
       begin
       begin
         if assigned(hightree) then
         if assigned(hightree) then
           exit;
           exit;
@@ -440,7 +441,7 @@ interface
                  is_array_of_const(left.resulttype) then
                  is_array_of_const(left.resulttype) then
                begin
                begin
                  st:=tloadnode(left).symtable;
                  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);
                  hightree:=genloadnode(pvarsym(srsym),st);
                  loadconst:=false;
                  loadconst:=false;
                end
                end
@@ -458,7 +459,7 @@ interface
                  if is_open_string(left.resulttype) then
                  if is_open_string(left.resulttype) then
                   begin
                   begin
                     st:=tloadnode(left).symtable;
                     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);
                     hightree:=genloadnode(pvarsym(srsym),st);
                     loadconst:=false;
                     loadconst:=false;
                   end
                   end
@@ -647,6 +648,7 @@ interface
         is_const : boolean;
         is_const : boolean;
         i : longint;
         i : longint;
         bestord  : porddef;
         bestord  : porddef;
+        srsym : psym;
       begin
       begin
          pass_1:=nil;
          pass_1:=nil;
          { release registers! }
          { release registers! }
@@ -754,7 +756,7 @@ interface
                      while assigned(symt^.next) and not assigned(srsym) do
                      while assigned(symt^.next) and not assigned(srsym) do
                        begin
                        begin
                           symt:=symt^.next;
                           symt:=symt^.next;
-                          getsymonlyin(symt,actprocsym^.name);
+                          srsym:=searchsymonlyin(symt,actprocsym^.name);
                           if assigned(srsym) then
                           if assigned(srsym) then
                             if srsym^.typ<>procsym then
                             if srsym^.typ<>procsym then
                               begin
                               begin
@@ -1568,7 +1570,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $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
     * merged generic m68k updates from fixes branch
 
 
   Revision 1.22  2001/01/08 21:46:46  peter
   Revision 1.22  2001/01/08 21:46:46  peter

+ 9 - 5
compiler/ninl.pas

@@ -101,6 +101,7 @@ implementation
          p1,hp,hpp  :  tnode;
          p1,hp,hpp  :  tnode;
          ppn : tcallparanode;
          ppn : tcallparanode;
          dummycoll: tparaitem;
          dummycoll: tparaitem;
+         srsym : psym;
 {$ifndef NOCOLONCHECK}
 {$ifndef NOCOLONCHECK}
          frac_para,length_para : tnode;
          frac_para,length_para : tnode;
 {$endif ndef NOCOLONCHECK}
 {$endif ndef NOCOLONCHECK}
@@ -477,7 +478,7 @@ implementation
                  set_varstate(left,false);
                  set_varstate(left,false);
                  if push_high_param(left.resulttype) then
                  if push_high_param(left.resulttype) then
                   begin
                   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),
                     hp:=caddnode.create(addn,genloadnode(pvarsym(srsym),tloadnode(left).symtable),
                                      genordinalconstnode(1,s32bitdef));
                                      genordinalconstnode(1,s32bitdef));
                     if (left.resulttype^.deftype=arraydef) and
                     if (left.resulttype^.deftype=arraydef) and
@@ -1055,7 +1056,7 @@ implementation
                  { firstcallparan(left,nil);
                  { firstcallparan(left,nil);
                    already done in firstcalln }
                    already done in firstcalln }
                  { now we know the type of buffer }
                  { now we know the type of buffer }
-                 getsymonlyin(systemunit,'SETTEXTBUF');
+                 srsym:=searchsymonlyin(systemunit,'SETTEXTBUF');
                  hp:=gencallnode(pprocsym(srsym),systemunit);
                  hp:=gencallnode(pprocsym(srsym),systemunit);
                  tcallnode(hp).left:=gencallparanode(
                  tcallnode(hp).left:=gencallparanode(
                    genordinalconstnode(tcallparanode(left).left.resulttype^.size,s32bitdef),left);
                    genordinalconstnode(tcallparanode(left).left.resulttype^.size,s32bitdef),left);
@@ -1337,7 +1338,7 @@ implementation
                                  if is_open_array(left.resulttype) or
                                  if is_open_array(left.resulttype) or
                                    is_array_of_const(left.resulttype) then
                                    is_array_of_const(left.resulttype) then
                                   begin
                                   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);
                                     hp:=genloadnode(pvarsym(srsym),tloadnode(left).symtable);
                                     firstpass(hp);
                                     firstpass(hp);
                                     result:=hp;
                                     result:=hp;
@@ -1363,7 +1364,7 @@ implementation
                                begin
                                begin
                                  if is_open_string(left.resulttype) then
                                  if is_open_string(left.resulttype) then
                                   begin
                                   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);
                                     hp:=genloadnode(pvarsym(srsym),tloadnode(left).symtable);
                                     firstpass(hp);
                                     firstpass(hp);
                                     result:=hp;
                                     result:=hp;
@@ -1536,7 +1537,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $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
     * fixed low() for signed types < 64bit
 
 
   Revision 1.28  2001/02/26 19:44:53  peter
   Revision 1.28  2001/02/26 19:44:53  peter

+ 13 - 5
compiler/ptype.pas

@@ -102,12 +102,17 @@ implementation
          if assigned(srsym) and
          if assigned(srsym) and
             (srsym^.typ=unitsym) then
             (srsym^.typ=unitsym) then
            begin
            begin
+              is_unit_specific:=true;
               consume(_POINT);
               consume(_POINT);
-              srsym:=searchsymonlyin(punitsym(srsym)^.unitsymtable,pattern);
-              pos:=akttokenpos;
-              s:=pattern;
+              if srsym^.owner^.unitid=0 then
+               begin
+                 srsym:=searchsymonlyin(punitsym(srsym)^.unitsymtable,pattern);
+                 pos:=akttokenpos;
+                 s:=pattern;
+               end  
+              else
+               srsym:=nil; 
               consume(_ID);
               consume(_ID);
-              is_unit_specific:=true;
            end;
            end;
          { are we parsing a possible forward def ? }
          { are we parsing a possible forward def ? }
          if isforwarddef and
          if isforwarddef and
@@ -579,7 +584,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $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
     * getsym redesign, removed the globals srsym,srsymtable
 
 
   Revision 1.17  2000/12/07 17:19:43  jonas
   Revision 1.17  2000/12/07 17:19:43  jonas