UCFS does not work for nested functions?

aliak something at something.com
Mon Jun 18 17:16:29 UTC 2018


On Monday, 18 June 2018 at 14:19:30 UTC, Steven Schveighoffer 
wrote:
> On 6/18/18 7:16 AM, Bastiaan Veelo wrote:
>> On Sunday, 18 May 2014 at 08:15:08 UTC, Steffen Wenz wrote:
>>> Hi,
>>>
>>> Just noticed that using UFCS does not work for nested 
>>> functions, and was wondering whether that's intended, and 
>>> what the rationale behind it is:
>> 
>> I just had the same question.
>> 
>> I can imagine that the context pointer of nested functions 
>> complicates things, but making `bar` `static` does not help. 
>> Has anything changed in recent years regarding the difficulty 
>> of implementing UFCS for nested functions? Would it be easier 
>> to only support static nested functions?
>> 
>> ```
>> void main() {
>>      static void bar(int x) {}
>> 
>>      int x;
>>      x.bar(); // Error: no property 'bar' for type 'int'
>> }
>> ```
>
> It's never been supported, and likely will not be. I think the 
> idea is that you can override expected behavior inside by 
> accidentally defining some function locally with the same name.
>
> -Steve

Wondering how this is different than with non-nested functions? 
If a global function has the same name as a member function then 
the member function takes precedence. So wouldn't the same thing 
just apply here if it were supported?

Cheers,
- Ali


More information about the Digitalmars-d-learn mailing list