dmd/compiler/test/compilable/test24013.d

43 lines
926 B
D

// https://issues.dlang.org/show_bug.cgi?id=24013
struct PropDescriptor(T)
{
void define(T delegate() aGetter, string aName) {}
}
enum Get;
mixin template PropertyPublisherImpl()
{
void collectPublicationsFromPairs(T)()
{
foreach (member; __traits(derivedMembers, T))
foreach (overload; __traits(getOverloads, T, member))
{
alias Attributes = __traits(getAttributes, overload);
static if (Attributes.length != 0)
{
auto descriptor = new PropDescriptor!size_t;
auto dg = &overload;
descriptor.define(dg, member);
}
}
}
}
void main()
{
class Bar
{
size_t _field;
mixin PropertyPublisherImpl;
this()
{
collectPublicationsFromPairs!Bar;
}
@Get size_t field()
{
return _field;
}
}
}