Переглянути джерело

* use tcallparanode.parasym to find the tparavarsym in twasmcallnode.pass_typecheck

Nikolay Nikolov 2 роки тому
батько
коміт
d38dbcac8f
1 змінених файлів з 2 додано та 4 видалено
  1. 2 4
      compiler/wasm32/nwasmcal.pas

+ 2 - 4
compiler/wasm32/nwasmcal.pas

@@ -57,7 +57,6 @@ implementation
     function twasmcallnode.pass_typecheck:tnode;
       var
         p: tcallparanode;
-        paranr: Integer;
         pvs: tparavarsym;
       begin
         result:=inherited;
@@ -67,15 +66,14 @@ implementation
         if assigned(procdefinition) then
           begin
             p:=tcallparanode(left);
-            paranr:=0;
             while assigned(p) do
               begin
-                pvs:=tparavarsym(procdefinition.paras[paranr]);
+                pvs:=p.parasym;
                 if assigned(p.left) and is_wasm_reference_type(p.left.resultdef) and
+                   assigned(pvs) and
                   ((pvs.varspez in [vs_var,vs_constref,vs_out]) or
                    ((pvs.varspez=vs_const) and (pvs.vardef.typ=formaldef))) then
                   CGMessage(parser_e_wasm_ref_types_can_only_be_passed_by_value);
-                Inc(paranr);
                 p:=tcallparanode(tcallparanode(p).right);
               end;
           end;