From 04b3d72cfe59e4aff86e0999bae95c680c2f2960 Mon Sep 17 00:00:00 2001 From: kai Date: Fri, 3 Feb 2012 17:20:18 +0100 Subject: [PATCH] Fix for issue #60. --- dmd/module.c | 138 +++++++++++++++++++++++++-------------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/dmd/module.c b/dmd/module.c index 9c7e89b7..7cf14a6b 100644 --- a/dmd/module.c +++ b/dmd/module.c @@ -1,6 +1,6 @@ // Compiler implementation of the D programming language -// Copyright (c) 1999-2011 by Digital Mars +// Copyright (c) 1999-2011 by Digital Mars // All Rights Reserved // written by Walter Bright // http://www.digitalmars.com @@ -64,9 +64,9 @@ ClassDeclaration *Module::moduleinfo; Module *Module::rootModule; DsymbolTable *Module::modules; -Modules Module::amodules; +Modules Module::amodules; -Dsymbols Module::deferred; // deferred Dsymbol's needing semantic() run on them +Dsymbols Module::deferred; // deferred Dsymbol's needing semantic() run on them unsigned Module::dprogress; void Module::init() @@ -78,8 +78,8 @@ Module::Module(char *filename, Identifier *ident, int doDocComment, int doHdrGen : Package(ident) { FileName *srcfilename; - FileName *objfilename; - FileName *symfilename; + FileName *objfilename; + FileName *symfilename; // printf("Module::Module(filename = '%s', ident = '%s')\n", filename, ident->toChars()); this->arg = filename; @@ -159,7 +159,7 @@ Module::Module(char *filename, Identifier *ident, int doDocComment, int doHdrGen this->doDocComment = doDocComment; this->doHdrGen = doHdrGen; this->isRoot = false; - //this->arrayfuncs = 0; + this->arrayfuncs.init(); #endif } @@ -303,7 +303,7 @@ const char *Module::kind() return "module"; } -Module *Module::load(Loc loc, Identifiers *packages, Identifier *ident) +Module *Module::load(Loc loc, Identifiers *packages, Identifier *ident) { Module *m; char *filename; @@ -318,8 +318,8 @@ 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]; + for (size_t i = 0; i < packages->dim; i++) + { Identifier *pid = packages->tdata()[i]; buf.writestring(pid->toChars()); #if _WIN32 @@ -356,7 +356,7 @@ Module *Module::load(Loc loc, Identifiers *packages, Identifier *ident) { for (size_t i = 0; i < global.path->dim; i++) { - char *p = (*global.path)[i]; + char *p = (*global.path)[i]; char *n = FileName::combine(p, sdi); if (FileName::exists(n)) { result = n; @@ -380,7 +380,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->tdata()[i]; printf("%s.", pid->toChars()); } } @@ -407,10 +407,10 @@ void Module::read(Loc loc) */ if (global.path) { - for (size_t i = 0; i < global.path->dim; i++) + 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->tdata()[i]; + fprintf(stdmsg, "import path[%zd] = %s\n", i, p); } } else @@ -422,7 +422,7 @@ void Module::read(Loc loc) inline unsigned readwordLE(unsigned short *p) { -#if LITTLE_ENDIAN +#if LITTLE_ENDIAN return *p; #else return (((unsigned char *)p)[1] << 8) | ((unsigned char *)p)[0]; @@ -436,7 +436,7 @@ inline unsigned readwordBE(unsigned short *p) inline unsigned readlongLE(unsigned *p) { -#if LITTLE_ENDIAN +#if LITTLE_ENDIAN return *p; #else return ((unsigned char *)p)[0] | @@ -672,11 +672,11 @@ void Module::parse() #endif p.nextToken(); members = p.parseModule(); - - ::free(srcfile->buffer); - srcfile->buffer = NULL; - srcfile->len = 0; - + + ::free(srcfile->buffer); + srcfile->buffer = NULL; + srcfile->len = 0; + md = p.md; numlines = p.loc.linnum; @@ -736,7 +736,7 @@ void Module::importAll(Scope *prevsc) // Add import of "object" if this module isn't "object" if (ident != Id::object) { - if (members->dim == 0 || ((*members)[0])->ident != Id::object) + if (members->dim == 0 || ((*members)[0])->ident != Id::object) { Import *im = new Import(0, NULL, Id::object, NULL, 0); members->shift(im); @@ -747,9 +747,9 @@ void Module::importAll(Scope *prevsc) { // Add all symbols into module's symbol table symtab = new DsymbolTable(); - for (size_t i = 0; i < members->dim; i++) + for (size_t i = 0; i < members->dim; i++) { - Dsymbol *s = members->tdata()[i]; + Dsymbol *s = members->tdata()[i]; s->addMember(NULL, sc->scopesym, 1); } } @@ -761,14 +761,14 @@ void Module::importAll(Scope *prevsc) * before any semantic() on any of them. */ setScope(sc); // remember module scope for semantic - for (size_t i = 0; i < members->dim; i++) - { Dsymbol *s = members->tdata()[i]; + for (size_t i = 0; i < members->dim; i++) + { Dsymbol *s = members->tdata()[i]; s->setScope(sc); } - for (size_t i = 0; i < members->dim; i++) + for (size_t i = 0; i < members->dim; i++) { - Dsymbol *s = members->tdata()[i]; + Dsymbol *s = members->tdata()[i]; s->importAll(sc); } @@ -776,7 +776,7 @@ void Module::importAll(Scope *prevsc) sc->pop(); // 2 pops because Scope::createGlobal() created 2 } -void Module::semantic() +void Module::semantic() { if (semanticstarted) return; @@ -805,7 +805,7 @@ void Module::semantic() // Add all symbols into module's symbol table symtab = new DsymbolTable(); - for (size_t i = 0; i < members->dim; i++) + for (size_t i = 0; i < members->dim; i++) { Dsymbol *s = (Dsymbol *)members->data[i]; s->addMember(NULL, sc->scopesym, 1); } @@ -815,23 +815,23 @@ void Module::semantic() * If this works out well, it can be extended to all modules * before any semantic() on any of them. */ - for (size_t i = 0; i < members->dim; i++) + for (size_t i = 0; i < members->dim; i++) { Dsymbol *s = (Dsymbol *)members->data[i]; s->setScope(sc); } #endif // Do semantic() on members that don't depend on others - for (size_t i = 0; i < members->dim; i++) - { Dsymbol *s = members->tdata()[i]; + for (size_t i = 0; i < members->dim; i++) + { Dsymbol *s = members->tdata()[i]; //printf("\tModule('%s'): '%s'.semantic0()\n", toChars(), s->toChars()); s->semantic0(sc); } // Pass 1 semantic routines: do public side of the definition - for (size_t i = 0; i < members->dim; i++) - { Dsymbol *s = members->tdata()[i]; + for (size_t i = 0; i < members->dim; i++) + { Dsymbol *s = members->tdata()[i]; //printf("\tModule('%s'): '%s'.semantic()\n", toChars(), s->toChars()); s->semantic(sc); @@ -846,13 +846,13 @@ void Module::semantic() //printf("-Module::semantic(this = %p, '%s'): parent = %p\n", this, toChars(), parent); } -void Module::semantic2() -{ +void Module::semantic2() +{ if (deferred.dim) { - for (size_t i = 0; i < deferred.dim; i++) + for (size_t i = 0; i < deferred.dim; i++) { - Dsymbol *sd = deferred.tdata()[i]; + Dsymbol *sd = deferred.tdata()[i]; sd->error("unable to resolve forward reference in definition"); } @@ -871,10 +871,10 @@ void Module::semantic2() //printf("Module = %p\n", sc.scopesym); // Pass 2 semantic routines: do initializers and function bodies - for (size_t i = 0; i < members->dim; i++) + for (size_t i = 0; i < members->dim; i++) { Dsymbol *s; - s = members->tdata()[i]; + s = members->tdata()[i]; s->semantic2(sc); } @@ -884,8 +884,8 @@ void Module::semantic2() //printf("-Module::semantic2('%s'): parent = %p\n", toChars(), parent); } -void Module::semantic3() -{ +void Module::semantic3() +{ //printf("Module::semantic3('%s'): parent = %p\n", toChars(), parent); if (semanticstarted >= 3) return; @@ -899,10 +899,10 @@ void Module::semantic3() //printf("Module = %p\n", sc.scopesym); // Pass 3 semantic routines: do initializers and function bodies - for (size_t i = 0; i < members->dim; i++) + for (size_t i = 0; i < members->dim; i++) { Dsymbol *s; - s = members->tdata()[i]; + s = members->tdata()[i]; //printf("Module %s: %s.semantic3()\n", toChars(), s->toChars()); s->semantic3(sc); } @@ -924,8 +924,8 @@ void Module::inlineScan() // gets imported, it is unaffected by context. //printf("Module = %p\n", sc.scopesym); - for (size_t i = 0; i < members->dim; i++) - { Dsymbol *s = members->tdata()[i]; + for (size_t i = 0; i < members->dim; i++) + { Dsymbol *s = members->tdata()[i]; //if (global.params.verbose) //printf("inline scan symbol %s\n", s->toChars()); @@ -949,8 +949,8 @@ void Module::gensymfile() buf.printf("// Sym file generated from '%s'", srcfile->toChars()); buf.writenl(); - for (size_t i = 0; i < members->dim; i++) - { Dsymbol *s = members->tdata()[i]; + for (size_t i = 0; i < members->dim; i++) + { Dsymbol *s = members->tdata()[i]; s->toCBuffer(&buf, &hgs); } @@ -1010,8 +1010,8 @@ Dsymbol *Module::symtabInsert(Dsymbol *s) void Module::clearCache() { - for (size_t i = 0; i < amodules.dim; i++) - { Module *m = amodules.tdata()[i]; + for (size_t i = 0; i < amodules.dim; i++) + { Module *m = amodules.tdata()[i]; m->searchCacheIdent = NULL; } } @@ -1023,9 +1023,9 @@ void Module::clearCache() void Module::addDeferredSemantic(Dsymbol *s) { // Don't add it if it is already there - for (size_t i = 0; i < deferred.dim; i++) + for (size_t i = 0; i < deferred.dim; i++) { - Dsymbol *sd = deferred.tdata()[i]; + Dsymbol *sd = deferred.tdata()[i]; if (sd == s) return; @@ -1070,10 +1070,10 @@ void Module::runDeferredSemantic() todo = (Dsymbol **)alloca(len * sizeof(Dsymbol *)); assert(todo); } - memcpy(todo, deferred.tdata(), len * sizeof(Dsymbol *)); + memcpy(todo, deferred.tdata(), len * sizeof(Dsymbol *)); deferred.setDim(0); - for (size_t i = 0; i < len; i++) + for (size_t i = 0; i < len; i++) { Dsymbol *s = todo[i]; @@ -1097,13 +1097,13 @@ int Module::imports(Module *m) //printf("%s Module::imports(%s)\n", toChars(), m->toChars()); int aimports_dim = aimports.dim; #if 0 - for (size_t i = 0; i < aimports.dim; i++) + for (size_t i = 0; i < aimports.dim; i++) { Module *mi = (Module *)aimports.data[i]; printf("\t[%d] %s\n", i, mi->toChars()); } #endif - for (size_t i = 0; i < aimports.dim; i++) - { Module *mi = aimports.tdata()[i]; + for (size_t i = 0; i < aimports.dim; i++) + { Module *mi = aimports.tdata()[i]; if (mi == m) return TRUE; if (!mi->insearch) @@ -1126,16 +1126,16 @@ int Module::selfImports() //printf("Module::selfImports() %s\n", toChars()); if (!selfimports) { - for (size_t i = 0; i < amodules.dim; i++) - { Module *mi = amodules.tdata()[i]; + for (size_t i = 0; i < amodules.dim; i++) + { Module *mi = amodules.tdata()[i]; //printf("\t[%d] %s\n", i, mi->toChars()); mi->insearch = 0; } selfimports = imports(this) + 1; - for (size_t i = 0; i < amodules.dim; i++) - { Module *mi = amodules.tdata()[i]; + for (size_t i = 0; i < amodules.dim; i++) + { Module *mi = amodules.tdata()[i]; //printf("\t[%d] %s\n", i, mi->toChars()); mi->insearch = 0; } @@ -1146,7 +1146,7 @@ int Module::selfImports() /* =========================== ModuleDeclaration ===================== */ -ModuleDeclaration::ModuleDeclaration(Identifiers *packages, Identifier *id) +ModuleDeclaration::ModuleDeclaration(Identifiers *packages, Identifier *id) { this->packages = packages; this->id = id; @@ -1158,8 +1158,8 @@ char *ModuleDeclaration::toChars() if (packages && packages->dim) { - for (size_t i = 0; i < packages->dim; i++) - { Identifier *pid = packages->tdata()[i]; + for (size_t i = 0; i < packages->dim; i++) + { Identifier *pid = packages->tdata()[i]; buf.writestring(pid->toChars()); buf.writeByte('.'); @@ -1184,7 +1184,7 @@ const char *Package::kind() } -DsymbolTable *Package::resolve(Identifiers *packages, Dsymbol **pparent, Package **ppkg) +DsymbolTable *Package::resolve(Identifiers *packages, Dsymbol **pparent, Package **ppkg) { DsymbolTable *dst = Module::modules; Dsymbol *parent = NULL; @@ -1194,9 +1194,9 @@ DsymbolTable *Package::resolve(Identifiers *packages, Dsymbol **pparent, Package *ppkg = NULL; if (packages) - { - for (size_t i = 0; i < packages->dim; i++) - { Identifier *pid = packages->tdata()[i]; + { + for (size_t i = 0; i < packages->dim; i++) + { Identifier *pid = packages->tdata()[i]; Dsymbol *p; p = dst->lookup(pid);