<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">On Fri, Dec 21, 2018 at 1:54 PM Michael Van Canneyt <<a href="mailto:michael@freepascal.org" target="_blank">michael@freepascal.org</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Why not simply declare<br>
<br>
function myfoo: string; varargs;external name 'foo';<br></blockquote><div><br></div><div>well, it is not a variadic situation, because the arguments must be named. However, ...<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Because if you declare all arguments as jsvalue, it makes no sense to create all<br>
overloads, there is no type checking.</blockquote><div><br></div><div>... I agree about this above, and I've used the varargs facility.</div><div><br></div><div>Anyway, it would be nice such feature like this, but at this moment I can't get an idea of a possible pascal-ish syntax. :-/ So a compiler option would be welcome, allowing "omit default parameters". E.g:</div><div><br></div><div><font face="monospace, monospace" size="1">procedure foo(const a: string = ''; const b: string = ''); external name 'foo';</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1">begin</font></div><div><font face="monospace, monospace" size="1">  foo;</font></div><div><font face="monospace, monospace" size="1">  foo('abc');<br></font></div><div><font face="monospace, monospace" size="1">  foo('abc', 'def');<br></font></div><div><font face="monospace, monospace" size="1">end.</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1">./pasjs -Jo=js test.pp</font></div><div><br></div><div>would generate:</div><div><br></div><div><div><font face="monospace, monospace" size="1">foo();</font></div><div><font face="monospace, monospace" size="1">foo("abc");</font></div><div><font face="monospace, monospace" size="1">foo("abc",123);</font></div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
What we could do is extend varargs to accept a count:<br>
<br>
function myfoo: string; varargs 2;external name 'foo';<br>
<br>
So you cannot pass more arguments than the original function supports, the<br>
compiler could check the number of var args passed.</blockquote></div><div><br></div><div>IMHO this should not be implemented, because the variadic idea is precisely solve situations that the number or arguments is unknown. :-)</div><div><br></div>--<br><div dir="ltr" class="m_1146102417121085946gmail_signature"><div dir="ltr"><div>Silvio Clécio</div></div></div></div></div></div></div></div>