On Friday, 5 April 2013 at 15:20:06 UTC, Jacob Carlborg wrote:
On 2013-04-05 16:03, Vadim Lopatin wrote:

2) Read/write property
   @property T someProperty() { ... }
   @property xxx someProperty(T value) { ... }
   treated as property with name 'someProperty'

BTW, I don't know how to check if property is read/write in compile time.

If there's no better way you can always use __traits(compiles), something like this:

__traits(compiles, { auto c = new Class; T v = c.someProperty; c.someProperty = T.init; });

Currently that will compile regardless of @property or not.

Quoting https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/http/restutil.d :

template isPropertyGetter(T)
{
enum isPropertyGetter = (functionAttributes!(T) & FunctionAttribute.property) != 0
                && !is(ReturnType!T == void);
}

template isPropertySetter(T)
{
enum isPropertySetter = (functionAttributes!(T) & FunctionAttribute.property) != 0
                && is(ReturnType!T == void);
}

Reply via email to