mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-28 10:33:14 +01:00
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(-)
This commit is contained in:
@@ -250,7 +250,7 @@ void ClassDeclaration::semantic(Scope *sc)
|
||||
return;
|
||||
}
|
||||
if (symtab)
|
||||
{ if (!scope)
|
||||
{ if (sizeok == 1 || !scope)
|
||||
{ //printf("\tsemantic for '%s' is already completed\n", toChars());
|
||||
return; // semantic() already completed
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ void EnumDeclaration::semantic(Scope *sc)
|
||||
memtype = Type::tint32;
|
||||
|
||||
if (symtab) // if already done
|
||||
{ if (!scope)
|
||||
{ if (isdone || !scope)
|
||||
return; // semantic() already completed
|
||||
}
|
||||
else
|
||||
@@ -96,6 +96,8 @@ void EnumDeclaration::semantic(Scope *sc)
|
||||
memtype = Type::tint32;
|
||||
}
|
||||
|
||||
isdone = 1;
|
||||
|
||||
t = isAnonymous() ? memtype : type;
|
||||
symtab = new DsymbolTable();
|
||||
sce = sc->push(this);
|
||||
|
||||
@@ -42,6 +42,8 @@ struct EnumDeclaration : ScopeDsymbol
|
||||
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);
|
||||
|
||||
@@ -58,7 +58,7 @@ Global::Global()
|
||||
|
||||
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;
|
||||
|
||||
@@ -253,8 +253,11 @@ void StructDeclaration::semantic(Scope *sc)
|
||||
return;
|
||||
|
||||
if (symtab)
|
||||
{ if (!scope)
|
||||
{ if (sizeok == 1 || !scope)
|
||||
{ //printf("already completed\n");
|
||||
scope = NULL;
|
||||
return; // semantic() already completed
|
||||
}
|
||||
}
|
||||
else
|
||||
symtab = new DsymbolTable();
|
||||
|
||||
Reference in New Issue
Block a user