UCFS does not work for nested functions?

Steven Schveighoffer schveiguy at yahoo.com
Mon Jun 18 14:19:30 UTC 2018


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


More information about the Digitalmars-d-learn mailing list