DynamoDS/Dynamo — pull request #1828 by ke-yu (2014-06-30 05:31:20+00:00)
Title: Fix function redefintion error if a member function is overloaded in some cases

This pull request is to fix member function resolution errorwhen some member functions have same signature as member functions that are overloaded with ```%thisptr``` parameter. [MAGN-1436: function redefintion error if a member function is overloaded in some cases] (http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-1436). E.g., for the following class definition and method invoking:
```
class X
{
def foo(x: X) {...}
def foo(x: X, y:X) {...}
}

x = X();
r = x.foo(x, x);
```
As member function ``def foo(x:X)`` is overloaded with ``def foo(%thisptr:X, x:X)``, at runtime ``r = x.foo(x, x);`` cannot be correctly resolved.

There are some ways to fix the issue. The easiest one is not to change the existing ``%dot()`` call implementation, but at runtime we check if the member function call is on instance or not.
* If it is called on instance, thisptr has been removed from the argument list, so the member function candidates shouldn't contain those auto-generated member functions with ``%thisptr``.
* On the other hand, if the left hand side object is an array, to handle replication, ``%dot()`` will inject thisptr as the first argument to the argument list. In this case the method resolution should only check those auto-generated member functions with ``%thisptr``.