Mercurial > projects > ldc
diff dmd/import.c @ 626:e83ba4ae4878
Fix import visibility bugs 313 and 314.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Wed, 01 Oct 2008 19:16:10 +0200 |
parents | aaade6ded589 |
children | bc982f1ad106 |
line wrap: on
line diff
--- a/dmd/import.c Wed Oct 01 19:15:17 2008 +0200 +++ b/dmd/import.c Wed Oct 01 19:16:10 2008 +0200 @@ -33,6 +33,7 @@ this->id = id; this->aliasId = aliasId; this->isstatic = isstatic; + protection = PROTundefined; pkg = NULL; mod = NULL; @@ -60,6 +61,10 @@ return isstatic ? (char *)"static import" : (char *)"import"; } +enum PROT Import::prot() +{ + return protection; +} Dsymbol *Import::syntaxCopy(Dsymbol *s) { @@ -131,14 +136,15 @@ } #endif + /* Default to private importing + */ + protection = sc->protection; + if (!sc->explicitProtection) + protection = PROTprivate; + if (!isstatic && !aliasId && !names.dim) { - /* Default to private importing - */ - enum PROT prot = sc->protection; - if (!sc->explicitProtection) - prot = PROTprivate; - sc->scopesym->importScope(mod, prot); + sc->scopesym->importScope(mod, protection); } // Modules need a list of each imported module @@ -149,13 +155,14 @@ sc = sc->push(mod); for (size_t i = 0; i < aliasdecls.dim; i++) - { Dsymbol *s = (Dsymbol *)aliasdecls.data[i]; + { AliasDeclaration *ad = (AliasDeclaration *)aliasdecls.data[i]; //printf("\tImport alias semantic('%s')\n", s->toChars()); if (!mod->search(loc, (Identifier *)names.data[i], 0)) error("%s not found", ((Identifier *)names.data[i])->toChars()); - s->semantic(sc); + ad->semantic(sc); + ad->protection = protection; } sc = sc->pop(); }