Merge dmd v2.055

This commit is contained in:
Alexey Prokhin
2011-09-12 15:38:38 +04:00
parent 8f4a15c868
commit 0e754b5acd
74 changed files with 3809 additions and 2240 deletions

View File

@@ -1,5 +1,5 @@
// Copyright (c) 1999-2010 by Digital Mars
// Copyright (c) 1999-2011 by Digital Mars
// All Rights Reserved
// written by Walter Bright
// http://www.digitalmars.com
@@ -71,9 +71,9 @@ void EnumDeclaration::semantic0(Scope *sc)
return;
if (!isAnonymous() || memtype)
return;
for (int i = 0; i < members->dim; i++)
for (size_t i = 0; i < members->dim; i++)
{
EnumMember *em = ((Dsymbol *)members->data[i])->isEnumMember();
EnumMember *em = (*members)[i]->isEnumMember();
if (em && (em->type || em->value))
return;
}
@@ -165,9 +165,9 @@ void EnumDeclaration::semantic(Scope *sc)
error("enum %s must have at least one member", toChars());
int first = 1;
Expression *elast = NULL;
for (int i = 0; i < members->dim; i++)
for (size_t i = 0; i < members->dim; i++)
{
EnumMember *em = ((Dsymbol *)members->data[i])->isEnumMember();
EnumMember *em = (*members)[i]->isEnumMember();
Expression *e;
if (!em)
@@ -242,13 +242,13 @@ void EnumDeclaration::semantic(Scope *sc)
{
/* Anonymous enum members get added to enclosing scope.
*/
for (Scope *scx = sce; scx; scx = scx->enclosing)
for (Scope *sct = sce; sct; sct = sct->enclosing)
{
if (scx->scopesym)
if (sct->scopesym)
{
if (!scx->scopesym->symtab)
scx->scopesym->symtab = new DsymbolTable();
em->addMember(sce, scx->scopesym, 1);
if (!sct->scopesym->symtab)
sct->scopesym->symtab = new DsymbolTable();
em->addMember(sce, sct->scopesym, 1);
break;
}
}
@@ -308,8 +308,7 @@ int EnumDeclaration::oneMember(Dsymbol **ps)
}
void EnumDeclaration::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
{ int i;
{
buf->writestring("enum ");
if (ident)
{ buf->writestring(ident->toChars());
@@ -329,9 +328,9 @@ void EnumDeclaration::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
buf->writenl();
buf->writeByte('{');
buf->writenl();
for (i = 0; i < members->dim; i++)
for (size_t i = 0; i < members->dim; i++)
{
EnumMember *em = ((Dsymbol *)members->data[i])->isEnumMember();
EnumMember *em = (*members)[i]->isEnumMember();
if (!em)
continue;
//buf->writestring(" ");