瀏覽代碼

* added missing tcasenode.derefnode override to process all the
case-blocks and the else-block

git-svn-id: trunk@9251 -

Jonas Maebe 17 年之前
父節點
當前提交
82cf80d4ca
共有 1 個文件被更改,包括 13 次插入0 次删除
  1. 13 0
      compiler/nset.pas

+ 13 - 0
compiler/nset.pas

@@ -82,6 +82,7 @@ interface
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure buildderefimpl;override;
           procedure buildderefimpl;override;
           procedure derefimpl;override;
           procedure derefimpl;override;
+          procedure derefnode;override;
           function dogetcopy : tnode;override;
           function dogetcopy : tnode;override;
           procedure insertintolist(l : tnodelist);override;
           procedure insertintolist(l : tnodelist);override;
           function pass_typecheck:tnode;override;
           function pass_typecheck:tnode;override;
@@ -578,6 +579,18 @@ implementation
       end;
       end;
 
 
 
 
+    procedure tcasenode.derefnode;
+      var
+        i : integer;
+      begin
+        inherited derefnode;
+        if assigned(elseblock) then
+          elseblock.derefnode;
+        for i:=0 to blocks.count-1 do
+          pcaseblock(blocks[i])^.statement.derefnode;
+      end;
+
+
     function tcasenode.pass_typecheck : tnode;
     function tcasenode.pass_typecheck : tnode;
       begin
       begin
         result:=nil;
         result:=nil;