Hi, all

Could someone confirm this functionality is merged into trunk? I mean constants in generics.


29.11.2018, 05:24, "Ryan Joseph" <r...@thealchemistguild.com>:



 On Nov 29, 2018, at 5:15 AM, Sven Barth via fpc-pascal <fpc-pascal@lists.freepascal.org> wrote:

 Looks better.
 The next thing to nuke is the tgenericparamdef. The parameters stored in tdef.genericparas are the parameter symbols, so there should be no need for defs. If necessary some of the code in pgenutil (and related functions) will need to be changed from handling a list of defs to a list of syms.


I added that extra type so that it would be compatible with genericdeflist. I don’t see how that can be removed. The const sym is pulled out in generate_specialization_phase2 and renamed (which I forget why already).

So the tgenericparamdef is just a vessel to hold the constsym until generate_specialization_phase2? Either way removing it means breaking genericdeflist right?

if typeparam.nodetype <> typen then
  begin
    { the typesym from paramdef will be added to the list in generate_specialization_phase2 }
    paramdef := tgenericparamdef.create(typeparam.resultdef,typeparam,constprettyname);
    genericdeflist.Add(paramdef);
  end
else
  begin
    constprettyname := '';
    genericdeflist.Add(typeparam.resultdef);
  end;

from generate_specialization_phase2:

for i:=0 to genericdef.genericparas.Count-1 do
  begin
    srsym:=tsym(genericdef.genericparas[i]);
    if not (sp_generic_para in srsym.symoptions) then
      internalerror(2013092602);

    // note: ryan
    { set the generic param name of the constsym of tgenericparamdef }
    typedef := tstoreddef(context.genericdeflist[i]);
    if typedef.typ = genericconstdef then
      tgenericparamdef(typedef).typesym.realname := srsym.realname;

    generictypelist.add(srsym.realname,typedef.typesym);
  end;

Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pas…



--
Regards,
Denis Golovan

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to