A new and exciting way in which DMD fails to build for me

Meta via Digitalmars-d digitalmars-d at puremagic.com
Tue Jan 20 12:14:42 PST 2015


I'm trying to build to build DMD and I've encountered a very 
strange problem. When I run `make -fwin32.mak`, there are errors 
when it tries to compile id.c:

id.c(298) : Error: 'idPool' is not a member of 'Lexer'
...etc.

Sure enough, when I look in id.c, there are a bunch of these:

stringof = Lexer::idPool("stringof");

But Lexer does not have an `idPool` member. I then looked in 
idgen.c for the offending line that must be wrongly inserting 
"Lexer" instead of "Identifier", but everything looks okay. 
Specifically this block:

for (i = 0; i < sizeof(msgtable) / sizeof(msgtable[0]); i++)
{   const char *id = msgtable[i].ident;
     const char *p = msgtable[i].name;

     if (!p)
         p = id;
     fprintf(fp,"    %s = Identifier::idPool(\"%s\");\n", id, p);
}

Looks like it should print the correct line to id.c. I can 
confirm this by running idgen.exe manually; it produces the 
correct file.

However, when I try deleting all the relevant files to make sure 
there is nothing old hanging around, then run make again, the 
same incorrect id.c is generated. This seems bizarre to me; what 
exactly is going on here?


More information about the Digitalmars-d mailing list