D's hidden function calls getting crazier.

user1234 user1234 at 12.de
Sat Oct 28 17:34:11 UTC 2023


On Friday, 27 October 2023 at 12:38:10 UTC, Hors wrote:
> It's impossible to tell if reading or writing an object's 
> variable would call a function because of UFCS or @property. it 
> just hurts because you can't know if it's a function call 
> without looking at implementation.
>
> The most basic example is
> ```
> obj.val = 1; // actually calls obj.setVal(1)
> assert(obj.val == 1); // actually calls obj.getVal(), assertion 
> may fail if getVal or setVal is not implemented correctly. 
> Which is unexpected
> ```
>
> To fix this hidden function craziness, UFCS needs to require 
> parantheses, and property function needs to be removed entirely.

that's nothing compared to hidden variables

```
void main()
{
     struct S{ int a; }
     S get(){return S(0);}
     get.a = 42; // pointless assignment on a hidden variable
}
```


More information about the Digitalmars-d mailing list