Il 26/12/2017 18:26, Sven Barth via fpc-devel ha scritto:

Am 26.12.2017 13:33 schrieb "Giuliano Colla" <giuliano.co...@fastwebnet.it <mailto:giuliano.co...@fastwebnet.it>>:

    If the idea is not rejected, then a number of refinements (which
    I'm ready to implement) are required to make the feature generally
    available:


My following remarks are independent of an eventual acceptance of the feature :

    - All architectures should be supported (now it's only for x86_64
    - symcpu.pas).

It might be possible to implement this in a platform independent way that might simply need to expand the capabilites of "absolute".

The feature in itself is platform independent.

The only catch is that in pdecvar.pas (where variable declaration is handled) there's a per platform hook for each symbol type, in order to allow for special handling of some features. For consistency I did follow the same rule, which is used for all the other declarations, disregarding whether they're platform independent or not. As a consequence, for each supported platform you must add in its specific symcpu.pas a type entry:

tcpubasedvarsym = class(tbasedvarsym)
end;
tcpubasedvarsymclass = class of tcpubasedvarsym;

and a line of code:

  cbasedvarsym:=tcpubasedvarsym;

As this is tedious, I've only done it for the platform I'm using (x86_64/symcpu.pas). To deploy the feature, the same lines must be added in each platform symcpu.pas unit. There's no more that that.

    - It should be decided if to make the feature generally available,
    or conditioned by an {$IFDEF FPCHASBASED}

    - It should be decided if the feature should be available in all
    modes or only in a selected number of modes (what of TurboPascal
    Mode or Delphi Mode?).

Rule of thumb: new features added as a separate mode switch, no FPC_HAS_* define necessary as by definition this can be done with version checks (there is only one trunk version, namely the current one).

    - It should be decided if error messages should be specific for
    the BASED construct or common to the ABSOLUTE one, slightly
    rephrasing the error message.

Might be one or the other depending on the message.

    - It should be decided if internal error # which currently keep
    the same number of the nearby ABSOLUTE internal error should be
    given new values.

Internal errors shall always be unique as they are used to find the error location, even for copy pasted code.


What's the rule to avoiding clashes? I gathered sort of YYYYMMDD## is it correct?

Giuliano



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

Reply via email to