Browse Source

* make sure that exitnodes can be safely typecheckpassed more than once

git-svn-id: trunk@15491 -
Jonas Maebe 15 years ago
parent
commit
5dd72acf36
1 changed files with 9 additions and 9 deletions
  1. 9 9
      compiler/nflw.pas

+ 9 - 9
compiler/nflw.pas

@@ -1529,6 +1529,14 @@ implementation
     constructor texitnode.create(l:tnode);
       begin
         inherited create(exitn,l);
+        if assigned(left) then
+          begin
+            { add assignment to funcretsym }
+            left:=ctypeconvnode.create(left,current_procinfo.procdef.returndef);
+            left:=cassignmentnode.create(
+              cloadnode.create(current_procinfo.procdef.funcretsym,current_procinfo.procdef.funcretsym.owner),
+              left);
+          end;
       end;
 
 
@@ -1548,15 +1556,7 @@ implementation
       begin
         result:=nil;
         if assigned(left) then
-          begin
-            { add assignment to funcretsym }
-            inserttypeconv(left,current_procinfo.procdef.returndef);
-            left:=cassignmentnode.create(
-                cloadnode.create(current_procinfo.procdef.funcretsym,current_procinfo.procdef.funcretsym.owner),
-                left);
-            typecheckpass(left);
-            set_varstate(left,vs_read,[vsf_must_be_valid]);
-          end;
+          typecheckpass(left);
         resultdef:=voidtype;
       end;