aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/parser.c10
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/parse/using1.C1
4 files changed, 17 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3bc0455..02262fd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2003-01-22 Mark Mitchell <mark@codesourcery.com>
+ PR c++/9384
+ * parser.c (cp_parser_using_declaration): Issue error messages
+ about name resolution failures here.
+
PR c++/9388
* class.c (currently_open_derived_class): Use dependent_type_p.
* cp-tree.h (dependent_type_p): New function.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index df9284c8..7f4eeaf 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -9219,7 +9219,15 @@ cp_parser_using_declaration (parser)
else
{
decl = cp_parser_lookup_name_simple (parser, identifier);
- if (scope)
+ if (decl == error_mark_node)
+ {
+ if (parser->scope && parser->scope != global_namespace)
+ error ("`%D::%D' has not been declared",
+ parser->scope, identifier);
+ else
+ error ("`::%D' has not been declared", identifier);
+ }
+ else if (scope)
do_local_using_decl (decl);
else
do_toplevel_using_decl (decl);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cbf0ad9..1bc7453 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2003-01-22 Mark Mitchell <mark@codesourcery.com>
+ PR c++/9384
+ * g++.dg/parse/using1.C: New test.
+
PR c++/9285
PR c++/9294
* g++.dg/parse/expr2.C: New test.
diff --git a/gcc/testsuite/g++.dg/parse/using1.C b/gcc/testsuite/g++.dg/parse/using1.C
new file mode 100644
index 0000000..efe7a0e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/using1.C
@@ -0,0 +1 @@
+namespace A { using ::B; } // { dg-error "" }