From: Mark Mitchell Date: Wed, 22 Jan 2003 19:28:23 +0000 (+0000) Subject: re PR c++/9384 (ICE in validate_nonmember_using_decl, at cp/decl2.c:4152) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4eb6d60937e81c6cb56eb2e421616955329d5e26;p=gcc.git re PR c++/9384 (ICE in validate_nonmember_using_decl, at cp/decl2.c:4152) PR c++/9384 * parser.c (cp_parser_using_declaration): Issue error messages about name resolution failures here. PR c++/9384 * g++.dg/parse/using1.C: New test. From-SVN: r61611 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3bc0455fc60..02262fdeaa2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2003-01-22 Mark Mitchell + 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 df9284c8c49..7f4eeaf67cb 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 cbf0ad94e93..1bc74536365 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2003-01-22 Mark Mitchell + 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 00000000000..efe7a0e31aa --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/using1.C @@ -0,0 +1 @@ +namespace A { using ::B; } // { dg-error "" }