From 1432a60a8b1af9fde7d49249f27517148f900a65 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sat, 23 Apr 2011 18:17:13 +0200 Subject: [PATCH] Merged DMD commit f8352960ff2b0533740e29e34bc86d632c8967bf: 4245 Declaring conflicting symbols in single function scope allowed Merged D2->D1 --- dmd/expression.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dmd/expression.c b/dmd/expression.c index 467fb267..ae58a07f 100644 --- a/dmd/expression.c +++ b/dmd/expression.c @@ -4430,9 +4430,14 @@ Expression *DeclarationExp::semantic(Scope *sc) error("declaration %s is already defined", s->toPrettyChars()); else if (sc->func) { VarDeclaration *v = s->isVarDeclaration(); - if ((s->isFuncDeclaration() /*|| v && v->storage_class & STCstatic*/) && + if ( (s->isFuncDeclaration() || s->isTypedefDeclaration() || + s->isAggregateDeclaration() || s->isEnumDeclaration() || + s->isInterfaceDeclaration()) && !sc->func->localsymtab->insert(s)) - error("declaration %s is already defined in another scope in %s", s->toPrettyChars(), sc->func->toChars()); + { + error("declaration %s is already defined in another scope in %s", + s->toPrettyChars(), sc->func->toChars()); + } else if (!global.params.useDeprecated) { // Disallow shadowing