[Pas2js] Possible feature? keep the original JS overload behavior

silvioprog silvioprog at gmail.com
Fri Dec 21 21:16:58 CET 2018


On Fri, Dec 21, 2018 at 4:59 PM silvioprog <silvioprog at gmail.com> wrote:

> On Fri, Dec 21, 2018 at 4:54 PM Mattias Gaertner via Pas2js <
> pas2js at lists.freepascal.org> wrote:
>
>> On Fri, 21 Dec 2018 20:17:04 +0100 (CET)
>> Michael Van Canneyt <michael at freepascal.org> wrote:
>
>
Dudes, possible ideas I checked with other friends:

- *nodefaults* - new keyword: it allows to omit the default arguments in a
single external or assembler function.
- $OMIT_DEFAULT_PARAMS ON|OFF - new compiler switch: it allows to omit the
default arguments in a single external or assembler function or in the
entire unit.

Some examples using the keyword:

function foo(a: integer = 0; b: integer = 0); *nodefaults*; external name
'foo';
function bar(a, b: integer = 0); *nodefaults*; external name 'bar';

Note: since the 'nodefaults' was defined to 'bar', you can declare default
params using the short way "a,b: integer = 0" or the verbose one "a:
integer = 0; b: integer = 0".

Some examples using the swtch:

{$OMIT_DEFAULT_PARAMS ON}

function foo(a: integer = 0; b: integer = 0); external name 'foo';
function bar(a, b: integer = 0); external name 'bar';
function foobar(a, b: integer = 0); assembler;

All functions above allows to omit default params. Or:

{$PUSH}{$OMIT_DEFAULT_PARAMS ON}
function foo(a: integer = 0; b: integer = 0); external name 'foo';
function bar(a, b: integer = 0); external name 'bar';
{$POP}
function foobar(a, b: integer = 0); assembler;

only "foo()" and "bar()" allows to omit their params.

What do you think?

-- 
Silvio Clécio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/pas2js/attachments/20181221/65f6ea39/attachment.html>


More information about the Pas2js mailing list