digitalmars.D.learn - template bug?
- gedaiu (40/40) Dec 03 2014 Hi,
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (5/7) Dec 03 2014 Attempting to compile with a recent dmd git head causes segmentation
- bearophile (17/22) Dec 03 2014 A first reduction for Bugzilla:
- gedaiu (5/29) Dec 04 2014 Thanks for the code revised version. I thought that the compiler
Hi, Is this a bug in the compiler? import std.stdio; import std.typetuple; class A { int foo() { return 0; } } class B : A { alias A.foo foo; override int foo() { return 1; } } template ItemProperty(item, string method) { static if(__traits(hasMember, item, method)) { static if(__traits(getProtection, ItemProperty!(item, method)).stringof[1..$-1] == "public") { alias ItemProperty = TypeTuple!(ItemProperty!(item, method)); } else { alias ItemProperty = TypeTuple!(); } } else { alias ItemProperty = TypeTuple!(); } } void test()() { static if(ItemProperty!(B, "foo").length > 1) { writeln("found"); } else { writeln("not found"); } } void main() { test; }
Dec 03 2014
On 12/03/2014 09:10 AM, gedaiu wrote:Hi, Is this a bug in the compiler?Attempting to compile with a recent dmd git head causes segmentation fault. Any compiler crash is a compiler bug. Please report it at https://issues.dlang.org/ Ali
Dec 03 2014
Ali Çehreli:Attempting to compile with a recent dmd git head causes segmentation fault. Any compiler crash is a compiler bug. Please report it at https://issues.dlang.org/ AliA first reduction for Bugzilla: alias TypeTuple(T...) = T; struct A { void foo() {} } template ItemProperty(item, string method) { static if(__traits(getProtection, ItemProperty!(item, method)).stringof) alias ItemProperty = TypeTuple!(ItemProperty!(item, method)); } void main() { auto l = ItemProperty!(A, "foo").length; } Bye, bearophile
Dec 03 2014
On Wednesday, 3 December 2014 at 18:25:41 UTC, bearophile wrote:Ali Çehreli:Thanks for the code revised version. I thought that the compiler crashes because I was trying to get the access of an overrided method. BogdanAttempting to compile with a recent dmd git head causes segmentation fault. Any compiler crash is a compiler bug. Please report it at https://issues.dlang.org/ AliA first reduction for Bugzilla: alias TypeTuple(T...) = T; struct A { void foo() {} } template ItemProperty(item, string method) { static if(__traits(getProtection, ItemProperty!(item, method)).stringof) alias ItemProperty = TypeTuple!(ItemProperty!(item, method)); } void main() { auto l = ItemProperty!(A, "foo").length; } Bye, bearophile
Dec 04 2014