[Issue 13238] New: getMember trait changes function linkage
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Fri Aug  1 11:10:37 PDT 2014
    
    
  
https://issues.dlang.org/show_bug.cgi?id=13238
          Issue ID: 13238
           Summary: getMember trait changes function linkage
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: minor
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: vlevenfeld at gmail.com
struct Foo
{
    extern (C) void function (int*) func;
}
struct Bar
{
    static string code ()
    {
        string code;
        foreach (symbol; __traits (allMembers, typeof(this)))
            static if (is(typeof(__traits (getMember, typeof(this), symbol))))
                {}
        return code;
    }
    extern (C) void function (int*) func;
    mixin(code);
}
struct Baz
{
    static string code ()
    {
        string code;
        foreach (symbol; __traits (allMembers, typeof(this)))
            static if (is(typeof(__traits (getMember, typeof(this), symbol))))
                {}
        return code;
    }
    mixin(code);
    extern (C) void function (int*) func;
}
void main () 
{
    static assert (functionLinkage!(typeof(Foo.func)) == `C`);
    static assert (functionLinkage!(typeof(Bar.func)) == `C`);
    static assert (functionLinkage!(typeof(Baz.func)) == `D`); // BUG why?
}
--
    
    
More information about the Digitalmars-d-bugs
mailing list