aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2008-11-20 15:23:32 -0500
committerJason Merrill <jason@gcc.gnu.org>2008-11-20 15:23:32 -0500
commita6bf9022494b0784d2e132bbbef9313174aa8ff5 (patch)
tree9c275e3d108b5c1e677abc00cb06de478d0387e6 /gcc
parentc7962e7d5dc3ccbbd1a0454eab655e50a7e78049 (diff)
downloadgcc-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/ChangeLog3
-rw-r--r--gcc/cp/parser.c3
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/lookup/name-clash7.C11
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" }
+};