On 17/01/2012 02:30, David Arno wrote:
ab.foo(1); //<- which foo does this call? int, uint or Number?
Right now all integer numbers are treated as regular integers (avm
doesn't support uint properly).
This means that 1 will be an integer and therefore foo(i:int) would be
used. "1.0" becomes a number
so foo(n:Number) will be used.
ab.foo(null); //<- and this one? String or Object?
Compile-time error, null is untyped, and there is no untyped method,
:Object is of a type! Untyped would be :*!
To be clear one would need to write something like:
ab.foo(String(null));
ab.foo(Object(null));
This could also apply to
ab["foo"](""); //<- how do we map this to ab.foo_String_void() ?
If namespaces were supported in interfaces (which I don't know yet) the
compiler could make
ab.foo[new QName("<reserved-character>String", "foo")]("");
or without namespaces:
ab.foo[str+"<reserved-character>String"]("");
We put in place a catch-all foo that handles all the situations where the
compiler cannot work out the mapping at compile time.
For backwards compatibility that is certainly a good idea. Beware of the
horror of using a swf compiled
with overloading support together with a swf that isn't.
yours
Martin.