Browse Source

* better check for maybe_call_procvar

peter 21 years ago
parent
commit
9625256d22
1 changed files with 13 additions and 8 deletions
  1. 13 8
      compiler/pstatmnt.pas

+ 13 - 8
compiler/pstatmnt.pas

@@ -923,12 +923,14 @@ implementation
              p:=expr;
 
              { When a colon follows a intconst then transform it into a label }
-             if try_to_consume(_COLON) then
+             if (p.nodetype=ordconstn) and
+                try_to_consume(_COLON) then
               begin
                 s:=tostr(tordconstnode(p).value);
                 p.free;
                 searchsym(s,srsym,srsymtable);
-                if assigned(srsym) then
+                if assigned(srsym) and
+                   (srsym.typ=labelsym) then
                  begin
                    if tlabelsym(srsym).defined then
                     Message(sym_e_label_already_defined);
@@ -954,11 +956,11 @@ implementation
                  resulttypepass(tlabelnode(p).left);
                end
              else
-               begin
-                 { change a load of a procvar to a call. this is also
-                   supported in fpc mode }
-                 maybe_call_procvar(p,false);
-               end;
+
+             { change a load of a procvar to a call. this is also
+               supported in fpc mode }
+             if p.nodetype in [vecn,derefn,typeconvn,subscriptn,loadn] then
+               maybe_call_procvar(p,false);
 
              { blockn support because a read/write is changed into a blocknode }
              { with a separate statement for each read/write operation (JM)    }
@@ -1100,7 +1102,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.131  2004-02-26 16:14:48  peter
+  Revision 1.132  2004-03-04 17:22:10  peter
+    * better check for maybe_call_procvar
+
+  Revision 1.131  2004/02/26 16:14:48  peter
     * withsymtables need to have the original tobject owner instead of
       the parent objectdef. Needed to check for visibility