On Wednesday, 23 January 2013 at 22:07:20 UTC, anonymous wrote:
alias int delegate() C;
C c;
auto noprop() {return c;}
void noprop(C v) {c = v;}
@property auto prop() {return c;}
@property void prop(C v) {c = v;}

&& is(typeof( {return noprop;}() ) == C) /* fails with -property. that's goofy */
Actually, this may be alright; have to be explicit with non-properties. Just don't apply that rule to UFCS.

Some more:

static assert(
   is(typeof( noprop(c)          )) /* of course */
&& is(typeof( prop(c)            )) /* should error */
);

void noprop(C, int);
@property void prop(C, int);

static assert(
is(typeof( {c.noprop;} )) /* fails with -property, should work, is explicit enough */
&& is(typeof( {c.prop;}          )) /* should error */

&& is(typeof( {c.noprop();}      )) /* ok */
&& is(typeof( {c.prop();}        )) /* should error */

&& is(typeof( {c.noprop(0);}     )) /* ok */
&& is(typeof( {c.prop(0);}       )) /* should error */

&& is(typeof( {c.noprop = 0;} )) /* fails with -property, alright */
&& is(typeof( {c.prop = 0;}      )) /* ok */
);

Reply via email to