mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-05-05 18:01:29 +02:00
Merged 1.075 frontend.
This commit is contained in:
71
dmd/module.c
71
dmd/module.c
@@ -20,7 +20,7 @@
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
|
||||
#if IN_GCC
|
||||
#ifdef IN_GCC
|
||||
#include "gdc_alloca.h"
|
||||
#endif
|
||||
|
||||
@@ -51,6 +51,11 @@
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include <map>
|
||||
|
||||
// stricmp
|
||||
#if __GNUC__ && !_WIN32
|
||||
#include "gnuc.h"
|
||||
#endif
|
||||
|
||||
static llvm::cl::opt<bool> preservePaths("op",
|
||||
llvm::cl::desc("Do not strip paths from source file"),
|
||||
llvm::cl::ZeroOrMore);
|
||||
@@ -319,7 +324,7 @@ Module *Module::load(Loc loc, Identifiers *packages, Identifier *ident)
|
||||
OutBuffer buf;
|
||||
|
||||
for (size_t i = 0; i < packages->dim; i++)
|
||||
{ Identifier *pid = packages->tdata()[i];
|
||||
{ Identifier *pid = (*packages)[i];
|
||||
|
||||
buf.writestring(pid->toChars());
|
||||
#if _WIN32
|
||||
@@ -380,7 +385,7 @@ Module *Module::load(Loc loc, Identifiers *packages, Identifier *ident)
|
||||
if (packages)
|
||||
{
|
||||
for (size_t i = 0; i < packages->dim; i++)
|
||||
{ Identifier *pid = packages->tdata()[i];
|
||||
{ Identifier *pid = (*packages)[i];
|
||||
printf("%s.", pid->toChars());
|
||||
}
|
||||
}
|
||||
@@ -411,8 +416,8 @@ bool Module::read(Loc loc)
|
||||
{
|
||||
for (size_t i = 0; i < global.path->dim; i++)
|
||||
{
|
||||
char *p = global.path->tdata()[i];
|
||||
fprintf(stdmsg, "import path[%zd] = %s\n", i, p);
|
||||
char *p = (*global.path)[i];
|
||||
fprintf(stdmsg, "import path[%llu] = %s\n", (ulonglong)i, p);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -460,24 +465,17 @@ inline unsigned readlongBE(unsigned *p)
|
||||
|
||||
#if IN_LLVM
|
||||
void Module::parse(bool gen_docs)
|
||||
#elif IN_GCC
|
||||
void Module::parse(bool dump_source)
|
||||
#else
|
||||
void Module::parse()
|
||||
#endif
|
||||
{ char *srcname;
|
||||
unsigned char *buf;
|
||||
unsigned buflen;
|
||||
unsigned le;
|
||||
unsigned bom;
|
||||
|
||||
{
|
||||
//printf("Module::parse()\n");
|
||||
|
||||
srcname = srcfile->name->toChars();
|
||||
char *srcname = srcfile->name->toChars();
|
||||
//printf("Module::parse(srcname = '%s')\n", srcname);
|
||||
|
||||
buf = srcfile->buffer;
|
||||
buflen = srcfile->len;
|
||||
unsigned char *buf = srcfile->buffer;
|
||||
unsigned buflen = srcfile->len;
|
||||
|
||||
if (buflen >= 2)
|
||||
{
|
||||
@@ -490,7 +488,8 @@ void Module::parse()
|
||||
* EF BB BF UTF-8
|
||||
*/
|
||||
|
||||
bom = 1; // assume there's a BOM
|
||||
unsigned le;
|
||||
unsigned bom = 1; // assume there's a BOM
|
||||
if (buf[0] == 0xFF && buf[1] == 0xFE)
|
||||
{
|
||||
if (buflen >= 4 && buf[2] == 0 && buf[3] == 0)
|
||||
@@ -641,7 +640,7 @@ void Module::parse()
|
||||
|
||||
#ifdef IN_GCC
|
||||
// dump utf-8 encoded source
|
||||
if (dump_source)
|
||||
if (global.params.dump_source)
|
||||
{ // %% srcname could contain a path ...
|
||||
d_gcc_dump_source(srcname, "utf-8", buf, buflen);
|
||||
}
|
||||
@@ -665,7 +664,7 @@ void Module::parse()
|
||||
buflen = dbuf->offset;
|
||||
#ifdef IN_GCC
|
||||
// dump extracted source
|
||||
if (dump_source)
|
||||
if (global.params.dump_source)
|
||||
d_gcc_dump_source(srcname, "d.utf-8", buf, buflen);
|
||||
#endif
|
||||
}
|
||||
@@ -767,7 +766,7 @@ void Module::importAll(Scope *prevsc)
|
||||
symtab = new DsymbolTable();
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{
|
||||
Dsymbol *s = members->tdata()[i];
|
||||
Dsymbol *s = (*members)[i];
|
||||
s->addMember(NULL, sc->scopesym, 1);
|
||||
}
|
||||
}
|
||||
@@ -780,13 +779,13 @@ void Module::importAll(Scope *prevsc)
|
||||
*/
|
||||
setScope(sc); // remember module scope for semantic
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{ Dsymbol *s = members->tdata()[i];
|
||||
{ Dsymbol *s = (*members)[i];
|
||||
s->setScope(sc);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{
|
||||
Dsymbol *s = members->tdata()[i];
|
||||
Dsymbol *s = (*members)[i];
|
||||
s->importAll(sc);
|
||||
}
|
||||
|
||||
@@ -841,7 +840,7 @@ void Module::semantic()
|
||||
|
||||
// Do semantic() on members that don't depend on others
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{ Dsymbol *s = members->tdata()[i];
|
||||
{ Dsymbol *s = (*members)[i];
|
||||
|
||||
//printf("\tModule('%s'): '%s'.semantic0()\n", toChars(), s->toChars());
|
||||
s->semantic0(sc);
|
||||
@@ -849,7 +848,7 @@ void Module::semantic()
|
||||
|
||||
// Pass 1 semantic routines: do public side of the definition
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{ Dsymbol *s = members->tdata()[i];
|
||||
{ Dsymbol *s = (*members)[i];
|
||||
|
||||
//printf("\tModule('%s'): '%s'.semantic()\n", toChars(), s->toChars());
|
||||
s->semantic(sc);
|
||||
@@ -870,7 +869,7 @@ void Module::semantic2()
|
||||
{
|
||||
for (size_t i = 0; i < deferred.dim; i++)
|
||||
{
|
||||
Dsymbol *sd = deferred.tdata()[i];
|
||||
Dsymbol *sd = deferred[i];
|
||||
|
||||
sd->error("unable to resolve forward reference in definition");
|
||||
}
|
||||
@@ -892,7 +891,7 @@ void Module::semantic2()
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{ Dsymbol *s;
|
||||
|
||||
s = members->tdata()[i];
|
||||
s = (*members)[i];
|
||||
s->semantic2(sc);
|
||||
}
|
||||
|
||||
@@ -920,7 +919,7 @@ void Module::semantic3()
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{ Dsymbol *s;
|
||||
|
||||
s = members->tdata()[i];
|
||||
s = (*members)[i];
|
||||
//printf("Module %s: %s.semantic3()\n", toChars(), s->toChars());
|
||||
s->semantic3(sc);
|
||||
}
|
||||
@@ -943,7 +942,7 @@ void Module::inlineScan()
|
||||
//printf("Module = %p\n", sc.scopesym);
|
||||
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{ Dsymbol *s = members->tdata()[i];
|
||||
{ Dsymbol *s = (*members)[i];
|
||||
//if (global.params.verbose)
|
||||
//printf("inline scan symbol %s\n", s->toChars());
|
||||
|
||||
@@ -968,7 +967,7 @@ void Module::gensymfile()
|
||||
buf.writenl();
|
||||
|
||||
for (size_t i = 0; i < members->dim; i++)
|
||||
{ Dsymbol *s = members->tdata()[i];
|
||||
{ Dsymbol *s = (*members)[i];
|
||||
|
||||
s->toCBuffer(&buf, &hgs);
|
||||
}
|
||||
@@ -1029,7 +1028,7 @@ Dsymbol *Module::symtabInsert(Dsymbol *s)
|
||||
void Module::clearCache()
|
||||
{
|
||||
for (size_t i = 0; i < amodules.dim; i++)
|
||||
{ Module *m = amodules.tdata()[i];
|
||||
{ Module *m = amodules[i];
|
||||
m->searchCacheIdent = NULL;
|
||||
}
|
||||
}
|
||||
@@ -1043,7 +1042,7 @@ void Module::addDeferredSemantic(Dsymbol *s)
|
||||
// Don't add it if it is already there
|
||||
for (size_t i = 0; i < deferred.dim; i++)
|
||||
{
|
||||
Dsymbol *sd = deferred.tdata()[i];
|
||||
Dsymbol *sd = deferred[i];
|
||||
|
||||
if (sd == s)
|
||||
return;
|
||||
@@ -1121,7 +1120,7 @@ int Module::imports(Module *m)
|
||||
}
|
||||
#endif
|
||||
for (size_t i = 0; i < aimports.dim; i++)
|
||||
{ Module *mi = aimports.tdata()[i];
|
||||
{ Module *mi = aimports[i];
|
||||
if (mi == m)
|
||||
return TRUE;
|
||||
if (!mi->insearch)
|
||||
@@ -1145,7 +1144,7 @@ int Module::selfImports()
|
||||
if (!selfimports)
|
||||
{
|
||||
for (size_t i = 0; i < amodules.dim; i++)
|
||||
{ Module *mi = amodules.tdata()[i];
|
||||
{ Module *mi = amodules[i];
|
||||
//printf("\t[%d] %s\n", i, mi->toChars());
|
||||
mi->insearch = 0;
|
||||
}
|
||||
@@ -1153,7 +1152,7 @@ int Module::selfImports()
|
||||
selfimports = imports(this) + 1;
|
||||
|
||||
for (size_t i = 0; i < amodules.dim; i++)
|
||||
{ Module *mi = amodules.tdata()[i];
|
||||
{ Module *mi = amodules[i];
|
||||
//printf("\t[%d] %s\n", i, mi->toChars());
|
||||
mi->insearch = 0;
|
||||
}
|
||||
@@ -1177,7 +1176,7 @@ char *ModuleDeclaration::toChars()
|
||||
if (packages && packages->dim)
|
||||
{
|
||||
for (size_t i = 0; i < packages->dim; i++)
|
||||
{ Identifier *pid = packages->tdata()[i];
|
||||
{ Identifier *pid = (*packages)[i];
|
||||
|
||||
buf.writestring(pid->toChars());
|
||||
buf.writeByte('.');
|
||||
@@ -1214,7 +1213,7 @@ DsymbolTable *Package::resolve(Identifiers *packages, Dsymbol **pparent, Package
|
||||
if (packages)
|
||||
{
|
||||
for (size_t i = 0; i < packages->dim; i++)
|
||||
{ Identifier *pid = packages->tdata()[i];
|
||||
{ Identifier *pid = (*packages)[i];
|
||||
Dsymbol *p;
|
||||
|
||||
p = dst->lookup(pid);
|
||||
|
||||
Reference in New Issue
Block a user