<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hello dudes.<br></div><div><div><br></div><div>Consider the following JS function:</div><div><br></div><div><font face="monospace, monospace" size="1">function foo(a, b) {<br></font></div><div><font face="monospace, monospace" size="1">  if (a && b)</font></div><div><font face="monospace, monospace" size="1">    return a + b;</font></div><div><font face="monospace, monospace" size="1">  if (a)</font></div><div><font face="monospace, monospace" size="1">    return a;</font></div><div><font face="monospace, monospace" size="1">  return "N/D";</font></div><div><font face="monospace, monospace" size="1">}</font></div><div><br></div><div>it allows the following "overloading":</div><div><br></div><div><font face="monospace, monospace" size="1">console.log(foo());<br></font></div><div><font face="monospace, monospace" size="1">console.log(foo("abc"));</font></div><div><font face="monospace, monospace" size="1">console.log(foo("abc", 123));</font></div><div><br></div><div>that prints:</div><div><br></div><div><font face="monospace, monospace" size="1">N/D<br></font></div><div><font face="monospace, monospace" size="1">abc</font></div><div><font face="monospace, monospace" size="1">abc123</font></div><div><br></div><div>I know it is already possible to map functions like that "foo()" using the "overload" keyword. However, it is very common to see JS libraries declaring functions with a lot of parameters, making it very difficult and verbose to do a wrapper in the Pas2JS-ish style.</div><div><br></div><div>So, I have a question. Consider the following code:</div><div><br></div><div><div><font face="monospace, monospace" size="1">function myfoo(const a: JSValue = nil; const b: JSValue = nil): string; external name 'foo';<br></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">  console.log(myfoo);</font></div><div><font face="monospace, monospace" size="1">  console.log(myfoo('abc'));</font></div><div><font face="monospace, monospace" size="1">  console.log(myfoo('abc', 123));</font></div><div><font face="monospace, monospace" size="1">end.</font></div></div><div><br></div><div>it will be transpiled as:</div><div><font size="1"><br></font></div><div><div><font face="monospace, monospace" size="1">console.log(foo(null,null));</font></div><div><font face="monospace, monospace" size="1">console.log(foo("abc",null));</font></div><div><font face="monospace, monospace" size="1">console.log(foo("abc",123)); </font></div></div><div><br></div><div>but, what do you think about to generating the following?:</div><div><br></div><div><div><font face="monospace, monospace" size="1">console.log(foo());</font></div><div><font face="monospace, monospace" size="1">console.log(foo("abc"));</font></div><div><font face="monospace, monospace" size="1">console.log(foo("abc",123));</font></div></div><div><br></div><div><div>maybe by adding a new compiler option, something like: 'OverrideStyle=pascal|javascript', respectively something like: -JOs=pas (or js).</div><div><br></div><div>I'm mapping a JS library that forced me to declare about fifteen overloaded functions, and its entire API declares about twenty-nine functions, in such situations, it would be nice to overload them like in JS, i.e., declaring only one function already overloaded by itself.</div></div><div><br></div><div>best,</div><div><br></div>--<br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Silvio Clécio</div></div></div></div></div></div></div></div></div></div></div></div></div>