Mercurial > projects > ldc
changeset 1628:6c36e3f49b28
Merge DMD r324: bugzilla 3663 and 3664 - fwd ref regressions
---
dmd/class.c | 2 +-
dmd/enum.c | 4 +++-
dmd/enum.h | 2 ++
dmd/mars.c | 2 +-
dmd/struct.c | 5 ++++-
5 files changed, 11 insertions(+), 4 deletions(-)
author | Leandro Lucarella <llucax@gmail.com> |
---|---|
date | Wed, 06 Jan 2010 15:18:23 -0300 |
parents | e83f0778c260 |
children | b07d683ba4d0 |
files | dmd/class.c dmd/enum.c dmd/enum.h dmd/mars.c dmd/struct.c |
diffstat | 5 files changed, 11 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/dmd/class.c Wed Jan 06 15:18:23 2010 -0300 +++ b/dmd/class.c Wed Jan 06 15:18:23 2010 -0300 @@ -250,7 +250,7 @@ return; } if (symtab) - { if (!scope) + { if (sizeok == 1 || !scope) { //printf("\tsemantic for '%s' is already completed\n", toChars()); return; // semantic() already completed }
--- a/dmd/enum.c Wed Jan 06 15:18:23 2010 -0300 +++ b/dmd/enum.c Wed Jan 06 15:18:23 2010 -0300 @@ -61,7 +61,7 @@ memtype = Type::tint32; if (symtab) // if already done - { if (!scope) + { if (isdone || !scope) return; // semantic() already completed } else @@ -96,6 +96,8 @@ memtype = Type::tint32; } + isdone = 1; + t = isAnonymous() ? memtype : type; symtab = new DsymbolTable(); sce = sc->push(this);
--- a/dmd/enum.h Wed Jan 06 15:18:23 2010 -0300 +++ b/dmd/enum.h Wed Jan 06 15:18:23 2010 -0300 @@ -42,6 +42,8 @@ Expression *defaultval; // default initializer #endif int isdeprecated; + int isdone; // 0: not done + // 1: semantic() successfully completed EnumDeclaration(Loc loc, Identifier *id, Type *memtype); Dsymbol *syntaxCopy(Dsymbol *s);
--- a/dmd/mars.c Wed Jan 06 15:18:23 2010 -0300 +++ b/dmd/mars.c Wed Jan 06 15:18:23 2010 -0300 @@ -58,7 +58,7 @@ copyright = "Copyright (c) 1999-2009 by Digital Mars and Tomas Lindquist Olsen"; written = "written by Walter Bright and Tomas Lindquist Olsen"; - version = "v1.054"; + version = "v1.055"; ldc_version = LDC_REV; llvm_version = LLVM_REV_STR; global.structalign = 8;
--- a/dmd/struct.c Wed Jan 06 15:18:23 2010 -0300 +++ b/dmd/struct.c Wed Jan 06 15:18:23 2010 -0300 @@ -253,8 +253,11 @@ return; if (symtab) - { if (!scope) + { if (sizeok == 1 || !scope) + { //printf("already completed\n"); + scope = NULL; return; // semantic() already completed + } } else symtab = new DsymbolTable();