detect C++ errors to fix 2288 and 18770
commit1eb2a14d1670a17b084e4fb33757a5fb6d7eefbd
authorJanis Johnson <janis187@us.ibm.com>
Thu, 26 May 2011 20:15:22 +0000 (26 20:15 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Thu, 26 May 2011 20:15:22 +0000 (26 20:15 +0000)
treed67de4f1d33d599df36d693a0e3561ed970648d6
parent6a1a787e415ffbb0023dd66c7cf4ebd3475b8c7f
detect C++ errors to fix 2288 and 18770

detect C++ errors to fix 2288 and 18770
gcc/cp/
PR c++/2288
PR c++/18770
* name-lookup.h (enum scope_kind): Add sk_cond.
* name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
Detect and report error for redeclaration from for-init or if
or switch condition.
(begin_scope): Handle sk_cond.
* semantics.c (begin_if_stmt): Use sk_cond.
(begin switch_stmt): Ditto.
gcc/testsuite/
PR c++/2288
PR c++/18770
* g++.old-deja/g++.jason/cond.C: Remove xfails.
* g++.dg/parse/pr18770.C: New test.
* g++.dg/cpp0x/range-for5.C: Add dg-error marker.

Co-Authored-By: Nathan Froyd <froydnj@codesourcery.com>
From-SVN: r174307
gcc/cp/ChangeLog
gcc/cp/name-lookup.c
gcc/cp/name-lookup.h
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/range-for5.C
gcc/testsuite/g++.dg/parse/pr18770.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.jason/cond.C