Browse Source

* extend read_anon_type() so that it can take a genericdef as well

Sven/Sarah Barth 1 year ago
parent
commit
0e9efd07ef
3 changed files with 10 additions and 10 deletions
  1. 1 1
      compiler/pdecl.pas
  2. 3 3
      compiler/pdecvar.pas
  3. 6 6
      compiler/ptype.pas

+ 1 - 1
compiler/pdecl.pas

@@ -289,7 +289,7 @@ implementation
                      caret, to support const s : ^string = nil }
                    block_type:=bt_const_type;
                    consume(_COLON);
-                   read_anon_type(hdef,false);
+                   read_anon_type(hdef,false,nil);
                    block_type:=bt_const;
                    { create symbol }
                    storetokenpos:=current_tokenpos;

+ 3 - 3
compiler/pdecvar.pas

@@ -1454,7 +1454,7 @@ implementation
                read_gpc_name(sc);
 {$endif}
 
-             read_anon_type(hdef,false);
+             read_anon_type(hdef,false,nil);
              maybe_guarantee_record_typesym(hdef,symtablestack.top);
              for i:=0 to sc.count-1 do
                begin
@@ -1782,7 +1782,7 @@ implementation
 
              typepos:=current_filepos;
 
-             read_anon_type(hdef,false);
+             read_anon_type(hdef,false,nil);
              maybe_guarantee_record_typesym(hdef,symtablestack.top);
 {$ifdef wasm}
              if is_wasm_reference_type(hdef) then
@@ -2001,7 +2001,7 @@ implementation
                       symtablestack.top.insertsym(fieldvs);
                     end;
                 end;
-              read_anon_type(casetype,true);
+              read_anon_type(casetype,true,nil);
               block_type:=bt_var;
               if assigned(fieldvs) then
                 begin

+ 6 - 6
compiler/ptype.pas

@@ -49,7 +49,7 @@ interface
     procedure read_named_type(var def:tdef;const newsym:tsym;genericdef:tstoreddef;genericlist:tfphashobjectlist;parseprocvardir:boolean;var hadtypetoken:boolean);
 
     { reads any type declaration }
-    procedure read_anon_type(var def : tdef;parseprocvardir:boolean);
+    procedure read_anon_type(var def : tdef;parseprocvardir:boolean;genericdef:tstoreddef);
 
     { parse nested type declaration of the def (typedef) }
     procedure parse_nested_types(var def: tdef; isforwarddef,allowspecialization: boolean; currentstructstack: tfpobjectlist);
@@ -1369,7 +1369,7 @@ implementation
         begin
           consume(_SET);
           consume(_OF);
-          read_anon_type(tt2,true);
+          read_anon_type(tt2,true,nil);
           if assigned(tt2) then
            begin
              case tt2.typ of
@@ -1553,7 +1553,7 @@ implementation
                     be parsed by readtype (PFV) }
                   if token=_LKLAMMER then
                    begin
-                     read_anon_type(hdef,true);
+                     read_anon_type(hdef,true,nil);
                      setdefdecl(hdef);
                    end
                   else
@@ -1659,7 +1659,7 @@ implementation
                 def:=arrdef;
              end;
            consume(_OF);
-           read_anon_type(tt2,true);
+           read_anon_type(tt2,true,nil);
            { set element type of the last array definition }
            if assigned(arrdef) then
              begin
@@ -2129,12 +2129,12 @@ implementation
       end;
 
 
-    procedure read_anon_type(var def : tdef;parseprocvardir:boolean);
+    procedure read_anon_type(var def : tdef;parseprocvardir:boolean;genericdef:tstoreddef);
       var
         hadtypetoken : boolean;
       begin
         hadtypetoken:=false;
-        read_named_type(def,nil,nil,nil,parseprocvardir,hadtypetoken);
+        read_named_type(def,nil,genericdef,nil,parseprocvardir,hadtypetoken);
       end;