Property rewriting; I feel it's important. Is there still time?

retard re at tard.com.invalid
Thu Mar 11 18:19:54 PST 2010


Thu, 11 Mar 2010 15:37:59 -0500, Steven Schveighoffer wrote:

> On Wed, 10 Mar 2010 17:16:11 -0500, Pelle Månsson
> <pelle.mansson at gmail.com> wrote:
> 
>> On 03/10/2010 10:14 PM, Steven Schveighoffer wrote:
>>> I think this is fine as long as we don't take it to the extreme. That
>>> is, I don't want to see this happening:
>>>
>>> foo.prop1.prop2++;
>>>
>>> is rewritten to
>>>
>>> auto p1 = foo.prop1;
>>> auto p2 = p1.prop2;
>>> p2++;
>>> p1.prop2 = p2;
>>> foo.prop1 = p1;
>>>
>>> I think one level of lowering is enough to handle the most common
>>> cases.
>>>
>>> Of course, if a property returns an lvalue, then it should just work.
>>>
>>> -Steve
>>
>> Why would you not want that? That's exactly what should happen! Why
>> not? I'm sorry if I'm missing something obvious.
> 
> BTW, C# doesn't do this:
> 
> 
> struct C
> {
>      private int _x;
>      public int x
>      {
>          get
>          {
>              return _x;
>          }
>          set
>          {
>              _x = value;
>          }
>      }
> }
> 
> struct D
> {
>      private C _c;
>      public C c
>      {
>          get
>          {
>              return _c;
>          }
>          set
>          {
>              _c = value;
>          }
>      }
> }
> 
> class X
> {
>      static void Main()
>      {
>          D d = new D();
>          d.c.x += 5;
>      }
> }

I hope that cannot be used as an argument against the feature. Scala 
supports chained properties merrily just like it should. Sorry for 
posting, I'll try to avoid that in the future.



More information about the Digitalmars-d mailing list