re PR c++/32870 (Unclear error message when declaring struct in wrong namespace)

/cp
2007-08-17  Paolo Carlini  <pcarlini@suse.de>

	PR c++/32870
	* parser.c (cp_parser_class_head): Improve error message.

/testsuite
2007-08-17  Paolo Carlini  <pcarlini@suse.de>

	PR c++/32870
	* g++.dg/other/error17.C: Adjust.

From-SVN: r127581
This commit is contained in:
Paolo Carlini 2007-08-17 09:35:23 +00:00
parent 5837d3c8f0
commit 968fc32d20
4 changed files with 31 additions and 4 deletions

View File

@ -1,7 +1,12 @@
2007-08-17 Paolo Carlini <pcarlini@suse.de>
PR c++/32870
* parser.c (cp_parser_class_head): Improve error message.
2007-08-16 Seongbae Park <seongbae.park@gmail.com>
* pt.c (instantiate_decl): Set input_location
for the function end.
* pt.c (instantiate_decl): Set input_location
for the function end.
2007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>

View File

@ -14417,8 +14417,12 @@ cp_parser_class_head (cp_parser* parser,
class was originally declared, the program is invalid. */
if (scope && !is_ancestor (scope, nested_name_specifier))
{
error ("declaration of %qD in %qD which does not enclose %qD",
type, scope, nested_name_specifier);
if (at_namespace_scope_p ())
error ("declaration of %qD in namespace %qD which does not "
"enclose %qD", type, scope, nested_name_specifier);
else
error ("declaration of %qD in %qD which does not enclose %qD",
type, scope, nested_name_specifier);
type = NULL_TREE;
goto done;
}

View File

@ -1,3 +1,8 @@
2007-08-17 Paolo Carlini <pcarlini@suse.de>
PR c++/32870
* g++.dg/other/error17.C: Adjust.
2007-08-17 Ben Elliston <bje@au.ibm.com>
PR middle-end/32970

View File

@ -0,0 +1,13 @@
// PR c++/32870
struct Foo {
struct Bar;
};
namespace N {
struct Foo::Bar { }; // { dg-error "in namespace 'N'" }
}
struct Baz {
struct Foo::Bar { }; // { dg-error "in 'struct Baz'" }
};