diff options
author | Jason Merrill <jason@redhat.com> | 2008-11-20 15:23:32 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2008-11-20 15:23:32 -0500 |
commit | a6bf9022494b0784d2e132bbbef9313174aa8ff5 (patch) | |
tree | 9c275e3d108b5c1e677abc00cb06de478d0387e6 /gcc | |
parent | c7962e7d5dc3ccbbd1a0454eab655e50a7e78049 (diff) | |
download | gcc-a6bf9022494b0784d2e132bbbef9313174aa8ff5.zip gcc-a6bf9022494b0784d2e132bbbef9313174aa8ff5.tar.gz gcc-a6bf9022494b0784d2e132bbbef9313174aa8ff5.tar.bz2 |
re PR c++/28513 (QOI: Diagnostic missing since 3.3.x when naming rule is violated)
PR c++/28513
* parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class.
From-SVN: r142056
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/parser.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/name-clash7.C | 11 |
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 558682b..9880815 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2008-11-20 Jason Merrill <jason@redhat.com> + PR c++/28513 + * parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class. + PR c++/37540 * call.c (build_over_call): Take the address of the function even in a template. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 2bf0e66..8fdd58c 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -14767,6 +14767,9 @@ cp_parser_class_name (cp_parser *parser, } return error_mark_node; } + else if (decl != error_mark_node + && !parser->scope) + maybe_note_name_used_in_class (identifier, decl); } } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 43454d2..3437a0d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2008-11-20 Jason Merrill <jason@redhat.com> + PR c++/28513 + * g++.dg/lookup/name-clash7.C: New test. + PR c++/37540 * g++.dg/cpp0x/decltype14.C: New test. diff --git a/gcc/testsuite/g++.dg/lookup/name-clash7.C b/gcc/testsuite/g++.dg/lookup/name-clash7.C new file mode 100644 index 0000000..5c0690a --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/name-clash7.C @@ -0,0 +1,11 @@ +// PR c++/28513 + +class foo { // { dg-error "changes meaning" } +public: + typedef int bar; +}; + +class baz { +public: + foo::bar foo; // { dg-error "declaration" } +}; |