Ver código fonte

* ensure insert_self_and_vmt_para can deal with a preexisting self symbol as long as it has the expected type

Sven/Sarah Barth 3 anos atrás
pai
commit
90eabdd6b4
1 arquivos alterados com 6 adições e 2 exclusões
  1. 6 2
      compiler/pparautl.pas

+ 6 - 2
compiler/pparautl.pas

@@ -286,8 +286,12 @@ implementation
                       vsp:=vs_var;
                     hdef:=selfdef;
                   end;
-                vs:=cparavarsym.create('$self',paranr_self,vsp,hdef,[vo_is_self,vo_is_hidden_para]);
-                pd.parast.insertsym(vs);
+                vs:=tparavarsym(pd.parast.find('self'));
+                if not assigned(vs) or (vs.typ<>paravarsym) or (vs.vardef<>hdef) then
+                  begin
+                    vs:=cparavarsym.create('$self',paranr_self,vsp,hdef,[vo_is_self,vo_is_hidden_para]);
+                    pd.parast.insertsym(vs);
+                  end;
 
                 current_tokenpos:=storepos;
               end;