digitalmars.D - Having problems using __traits
- Daniel Ribeiro Maciel (9/9) Apr 03 2010 Hello! I'm currently having this issue using __traits. Can anyone tell m...
- bearophile (32/33) Apr 03 2010 At the moment DMD2 has holes likes Swiss cheese. You have hit one, two, ...
- bearophile (3/3) Apr 03 2010 The first is now bug 4058. The second I don't know if it's the same bug....
Hello! I'm currently having this issue using __traits. Can anyone tell me what am I doing wrong, or whether this is a compiler bug or not? Thanks! Source code is attached to this message. S:\Repositorios\tpp\trunk\script.d(15): Error: string expected as second argument of __traits getMember instead of method S:\Repositorios\tpp\trunk\script.d(15): Error: function expected before (), not false of type bool S:\Repositorios\tpp\trunk\script.d(24): Error: template instance script.exportType!(Test).exportType.methodHandler!(Test,method) error instantiating S:\Repositorios\tpp\trunk\script.d(30): instantiated from here: exportType!(Test) Best Regards, Daniel
Apr 03 2010
Daniel Ribeiro Maciel:Hello! I'm currently having this issue using __traits. Can anyone tell me what am I doing wrong, or whether this is a compiler bug or not?<At the moment DMD2 has holes likes Swiss cheese. You have hit one, two, or more than two different bugs. This is the first bug: struct Test { void hello() {} } void main() { Test t; string m = "hello"; __traits(getMember, t, m)(); } The error message is wrong: if m must be an enum/immutable string, then the error message has to say so. The second problem can be seen here: import std.c.stdio: puts; class Test { void hello() { puts("hello!"); } } void methodHandler(T, alias member)() { auto o = new T(); __traits(getMember, o, member)(); } void main() { auto methods = __traits(allMembers, Test); foreach (method; methods) if (method == "hello") methodHandler!(Test, "hello")(); } If you replace "hello" inside methodHandler!(Test, "hello")(); with method, the program doesn't compile. I don't know if it's the same problem as before. I can put in bugzilla the first bug. Bye, bearophile
Apr 03 2010
The first is now bug 4058. The second I don't know if it's the same bug... Bye, bearophile
Apr 03 2010