[Issue 10258] Add hasAccess trait

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jul 19 14:08:57 PDT 2013


http://d.puremagic.com/issues/show_bug.cgi?id=10258



--- Comment #7 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2013-07-19 14:08:55 PDT ---
(In reply to comment #5)
> I think hasAccess traits would be completely redundant feature.

This isn't a good workaround for two reasons:

1. It is not clear enough what is being done (same as JMD's argument)
2. __traits(compiles) silences all compiler errors.

#2 is the most important reason. Here's an example:

-----
struct S
{
    int a;
}

void main()
{
    static if (__traits(compiles, __traits(getMember, T, "a")))
    {
        pragma(msg, "Can access a!");
    }
}
-----

This will not print anything, because the aggregate type is wrong (it doesn't
even exist!). It should have been 'S', not 'T', but __traits(compiles) has
gagged the error message. 

Tracking down bugs like these are hard when there are no error messages. If
instead we had a trait, the above would become:

-----
static if (__traits(hasAccess, __traits(getMember, T, "b")))
-----

And the error message is clear:

> Error: undefined identifier T, did you mean struct S?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list