[疑难] 貌似__traits(allMembers, X)的一个BUG

qiezi 2007-11-25
class User {
	string name;
	string password;
}

__traits(allMembers, User)可以获取到这两个成员,加上private/protected/public/package都无法再取到它们,derivedMembers也一样,2.007上测试发现的。
Colorful 2007-11-26
我这里没有问题。

测试环境如下:
DMD 2.007 + WinXP SP2
oldrev 2007-11-26
2.007 没问题:
import std.stdio;

package class User {  
    private string name;  
    protected string password;  
}  

void main()
{
    writefln(__traits(allMembers, User));
}
qiezi 2007-11-26
不会吧??oldrev的代码在我这里运行的结果是:
引用

C:\test\dtest>testtraits
[print toString toHash opCmp opEquals]

不包括name和password。我检查了的确是dmd 2.007
oldrev 2007-11-26
oooops....
我的错,我运行的测试程序忘了加上 package和 private 了
qiezi 2007-11-26
只要显式地加上访问控制,不管是public还是其它,都取不到了。
oldrev 2007-11-26
应该就是这个问题了:
http://d.puremagic.com/issues/show_bug.cgi?id=1499
qiezi 2007-11-26
好像不一样。我感觉Walter的test case太少了,这种简单情况都没测试出来。
oldrev 2007-11-26
extern(Windows) 也属于 attributes,所以应该是同一个 bug
Global site tag (gtag.js) - Google Analytics