mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 05:50:28 +08:00
re PR c++/23586 (Bad diagnostic for invalid namespace-name)
PR c++/23586 * parser.c (cp_parser_namespace_name): Move diagnostic for invalid namespace-name to here from ... * name-lookup.c (do_namespace_alias): ... here and ... (do_using_directive): ... here. Remove dead code. From-SVN: r103643
This commit is contained in:
parent
7a98d47cf7
commit
166206ce70
@ -1,3 +1,11 @@
|
||||
2005-08-30 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/23586
|
||||
* parser.c (cp_parser_namespace_name): Move diagnostic for
|
||||
invalid namespace-name to here from ...
|
||||
* name-lookup.c (do_namespace_alias): ... here and ...
|
||||
(do_using_directive): ... here. Remove dead code.
|
||||
|
||||
2005-08-28 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/23099
|
||||
|
@ -3037,12 +3037,10 @@ namespace_ancestor (tree ns1, tree ns2)
|
||||
void
|
||||
do_namespace_alias (tree alias, tree namespace)
|
||||
{
|
||||
if (TREE_CODE (namespace) != NAMESPACE_DECL)
|
||||
{
|
||||
/* The parser did not find it, so it's not there. */
|
||||
error ("unknown namespace %qD", namespace);
|
||||
return;
|
||||
}
|
||||
if (namespace == error_mark_node)
|
||||
return;
|
||||
|
||||
gcc_assert (TREE_CODE (namespace) == NAMESPACE_DECL);
|
||||
|
||||
namespace = ORIGINAL_NAMESPACE (namespace);
|
||||
|
||||
@ -3191,26 +3189,15 @@ do_using_directive (tree namespace)
|
||||
{
|
||||
tree context = NULL_TREE;
|
||||
|
||||
if (namespace == error_mark_node)
|
||||
return;
|
||||
|
||||
gcc_assert (TREE_CODE (namespace) == NAMESPACE_DECL);
|
||||
|
||||
if (building_stmt_tree ())
|
||||
add_stmt (build_stmt (USING_STMT, namespace));
|
||||
|
||||
/* using namespace A::B::C; */
|
||||
if (TREE_CODE (namespace) == SCOPE_REF)
|
||||
namespace = TREE_OPERAND (namespace, 1);
|
||||
if (TREE_CODE (namespace) == IDENTIFIER_NODE)
|
||||
{
|
||||
/* Lookup in lexer did not find a namespace. */
|
||||
if (!processing_template_decl)
|
||||
error ("namespace %qT undeclared", namespace);
|
||||
return;
|
||||
}
|
||||
if (TREE_CODE (namespace) != NAMESPACE_DECL)
|
||||
{
|
||||
if (!processing_template_decl)
|
||||
error ("%qT is not a namespace", namespace);
|
||||
return;
|
||||
}
|
||||
namespace = ORIGINAL_NAMESPACE (namespace);
|
||||
|
||||
if (!toplevel_bindings_p ())
|
||||
{
|
||||
push_using_directive (namespace);
|
||||
|
@ -10254,6 +10254,8 @@ cp_parser_namespace_name (cp_parser* parser)
|
||||
if (namespace_decl == error_mark_node
|
||||
|| TREE_CODE (namespace_decl) != NAMESPACE_DECL)
|
||||
{
|
||||
if (!cp_parser_uncommitted_to_tentative_parse_p (parser))
|
||||
error ("%qD is not a namespace-name", identifier);
|
||||
cp_parser_error (parser, "expected namespace-name");
|
||||
namespace_decl = error_mark_node;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user