On Tue, 20 Jan 2015 20:14:42 +0000 Meta via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
> 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? what is that "id.c" at all? i can't find such file in dmd git repo...
signature.asc
Description: PGP signature