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 #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