Bug 7670 – UFCS problem with @property and structs

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-03-08T05:00:00Z
Last change time
2012-03-18T05:52:43Z
Keywords
pull, rejects-valid
Assigned to
nobody
Creator
bearophile_hugs

Comments

Comment #0 by bearophile_hugs — 2012-03-08T05:00:11Z
Modified from an example by Comrad in D.learn. struct A { double x; } @property ref double y(ref A a) { return a.x; } void main() { A a1; a1.y() = 2.0; // OK a1.y = 2.0; // Error } DMD 2.059head gives: test.d(10): Error: no property 'y' for type 'A', did you mean 'x'?
Comment #1 by k.hara.pg — 2012-03-15T08:02:47Z
Comment #2 by bearophile_hugs — 2012-03-16T18:44:11Z
Maybe you have gone a bit too much far with your fix, Kenji Hara. In my example code here I used @property: @property ref double y(ref A a) { But your patch allows that syntax even without @property. Your patch allows _very_ nice and noise-free code like: [1, 2, -3, 4].filter!(x => x > 0).map!(x => x ^^ 0.2).writeln; But I think it undermines the meaning and usefulness of the -property compiler switch and the meaning of @property. So I suggest to think a bit more about this, to keep the nice things, and to not throw away two baby waters.
Comment #3 by bearophile_hugs — 2012-03-18T05:52:43Z
See also Bug 7722 and Bug 7723