On Thursday, 20 March 2025 at 02:01:25 UTC, Jonathan M Davis wrote:
On Wednesday, March 19, 2025 5:48:37 PM MDT H. S. Teoh via Digitalmars-d-learn wrote:
I thought it was always a miss. :-D At least, it's never worked for me every time I tried it. I always have to move the UFCS function to module scope, then it works.

AFAIK, it's always a miss. There's a bug report somewhere where Kenji explained exactly why it works the way that it does, but I don't recall what he said. I also don't know if it was closed as "won't fix" or remember much that would make it easy to find, unfortunately. :|

But there is a technical reason for the limitation, even if I don't remember what it is.

It's to prevent UFCS functions from being shadowed by local variables. From the spec:

Rationale: Local function symbols are not considered by UFCS to avoid unexpected name conflicts.

https://dlang.org/spec/function.html#pseudo-member

Reply via email to