[Issue 6211] __traits (compile) return wrong result when the bug happen
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jun 24 21:06:09 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6211
--- Comment #5 from Lloyd Dupont <ld at galador.net> 2011-06-24 21:01:19 PDT ---
I found a way to reduce the sample even further.
1st no need to have 2 project (lib & exe). All in the same exe (but different
module) is enough to cause the bug.
==== main.d ====
module main;
import lib;
class Foo
{
static this()
{
Compiled!(Foo, "Subfoo");
}
@property public Foo Subfoo() { return null; }
@property public void Subfoo(Foo f) { }
}
int main(string[] argv)
{
return 0;
}
====== lib.d ======
module lib;
import std.traits;
import std.stdio;
void Compiled(T, string memberName)()
{
T t;
writeln(mixin( "__traits(compiles, t." ~memberName ~" = ("
~typeof(__traits(getMember, T, memberName)).stringof ~").init)" ));
}
===============
this output "false", whereas it should output "true"
a work around (and simpler code in fact) is to use the following simpler mixin
(in Compiled)
---
writeln(mixin( "__traits(compiles, t." ~memberName ~" = (typeof(t." ~memberName
~")).init)" ));
---
Yet I do think this sample highlight a compiler bug
--
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