www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 12271] New: Undefined reference linker error with __traits(compiles) that returns false.


           Summary: Undefined reference linker error with
                    __traits(compiles) that returns false.
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: opantm2+dbugs gmail.com

--- Comment #0 from Kapps <opantm2+dbugs gmail.com> 2014-02-26 17:50:47 PST ---
I haven't been able to reduce this further, and while I assume it's the
__traits(compiles) that causes this, I could be wrong.
Note that the __traits(compiles) should always fail.

struct Symbol {


struct TypeMetadata {

void createMetadata(Type)() {
    if(__traits(compiles, getType!Type)) { }

void getType(T)() {
    Symbol = getSymbol!T;

Symbol getSymbol(Args...)() {
    Symbol result();
    return result;

void main() {

ogivm:~$ rdmd -v test.d
binary    /usr/bin/dmd
version   v2.065-devel-0f04b0b
config    /usr/bin/dmd.conf
parse     test
importall test
import    object        (/home/kapps/dev/druntime/import/object.di)
semantic  test
entry     main          test.d
semantic2 test
semantic3 test
code      test
function  D main
function  test.createMetadata!(TypeMetadata).createMetadata
function  test.getSymbol!(TypeMetadata).getSymbol
gcc /tmp/.rdmd-1000/rdmd-test.d-65EE17DBD03E4141D553B0B773C006B9/objs/test.o -o
/tmp/.rdmd-1000/rdmd-test.d-65EE17DBD03E4141D553B0B773C006B9/test.tmp -m64
-L/usr/lib/x86_64-linux-gnu -L/usr/lib/i386-linux-gnu -Xlinker
--no-warn-search-mismatch -Xlinker --export-dynamic -l:libphobos2.a -lpthread
-lm -lrt 
/tmp/.rdmd-1000/rdmd-test.d-65EE17DBD03E4141D553B0B773C006B9/objs/test.o: In
undefined reference to
collect2: error: ld returned 1 exit status
--- errorlevel 1

Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 26 2014