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








"gedaiu" <szabobogdan yahoo.com>