Browse Source

* better error recovering

git-svn-id: trunk@490 -
florian 20 years ago
parent
commit
c6ad403a04
1 changed files with 22 additions and 14 deletions
  1. 22 14
      compiler/nutils.pas

+ 22 - 14
compiler/nutils.pas

@@ -304,10 +304,13 @@ implementation
           begin
           begin
             result:=cloadnode.create(srsym,srsymtable);
             result:=cloadnode.create(srsym,srsymtable);
             include(result.flags,nf_is_self);
             include(result.flags,nf_is_self);
-            resulttypepass(result);
           end
           end
         else
         else
-          CGMessage(parser_e_illegal_expression);
+          begin
+            result:=cerrornode.create;
+            CGMessage(parser_e_illegal_expression);
+          end;
+        resulttypepass(result);
       end;
       end;
 
 
 
 
@@ -319,12 +322,13 @@ implementation
         result:=nil;
         result:=nil;
         searchsym('result',srsym,srsymtable);
         searchsym('result',srsym,srsymtable);
         if assigned(srsym) then
         if assigned(srsym) then
-          begin
-            result:=cloadnode.create(srsym,srsymtable);
-            resulttypepass(result);
-          end
+          result:=cloadnode.create(srsym,srsymtable)
         else
         else
-          CGMessage(parser_e_illegal_expression);
+          begin
+            result:=cerrornode.create;
+            CGMessage(parser_e_illegal_expression);
+          end;
+        resulttypepass(result);
       end;
       end;
 
 
 
 
@@ -339,10 +343,13 @@ implementation
           begin
           begin
             result:=cloadnode.create(srsym,srsymtable);
             result:=cloadnode.create(srsym,srsymtable);
             include(result.flags,nf_load_self_pointer);
             include(result.flags,nf_load_self_pointer);
-            resulttypepass(result);
           end
           end
         else
         else
-          CGMessage(parser_e_illegal_expression);
+          begin
+            result:=cerrornode.create;
+            CGMessage(parser_e_illegal_expression);
+          end;
+        resulttypepass(result);
       end;
       end;
 
 
 
 
@@ -354,12 +361,13 @@ implementation
         result:=nil;
         result:=nil;
         searchsym('vmt',srsym,srsymtable);
         searchsym('vmt',srsym,srsymtable);
         if assigned(srsym) then
         if assigned(srsym) then
-          begin
-            result:=cloadnode.create(srsym,srsymtable);
-            resulttypepass(result);
-          end
+          result:=cloadnode.create(srsym,srsymtable)
         else
         else
-          CGMessage(parser_e_illegal_expression);
+          begin
+            result:=cerrornode.create;
+            CGMessage(parser_e_illegal_expression);
+          end;
+        resulttypepass(result);
       end;
       end;