decl.c (grokdeclarator): Catch wierd declarators.
* decl.c (grokdeclarator): Catch wierd declarators. * decl2.c (finish_file): Don't abort because of namespace parsing failure. (check_decl_namespace): Remove. From-SVN: r25144
This commit is contained in:
parent
d16790f212
commit
efe38fabae
@ -1,3 +1,10 @@
|
||||
1999-02-10 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* decl.c (grokdeclarator): Catch wierd declarators.
|
||||
* decl2.c (finish_file): Don't abort because of namespace parsing
|
||||
failure.
|
||||
(check_decl_namespace): Remove.
|
||||
|
||||
1999-02-09 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
* cp-tree.h (get_template_base): Don't declare.
|
||||
|
@ -10574,6 +10574,20 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
}
|
||||
}
|
||||
|
||||
if (declarator == NULL_TREE
|
||||
|| TREE_CODE (declarator) == IDENTIFIER_NODE
|
||||
|| (TREE_CODE (declarator) == TEMPLATE_ID_EXPR
|
||||
&& (TREE_CODE (type) == FUNCTION_TYPE
|
||||
|| TREE_CODE (type) == METHOD_TYPE)))
|
||||
/* OK */;
|
||||
else if (TREE_CODE (declarator) == TEMPLATE_ID_EXPR)
|
||||
{
|
||||
cp_error ("template-id `%D' used as a declarator", declarator);
|
||||
declarator = dname;
|
||||
}
|
||||
else
|
||||
my_friendly_abort (990210);
|
||||
|
||||
if (RIDBIT_SETP (RID_TYPEDEF, specbits) && decl_context != TYPENAME)
|
||||
{
|
||||
tree decl;
|
||||
|
@ -58,7 +58,6 @@ static int is_namespace_ancestor PROTO((tree, tree));
|
||||
static void add_using_namespace PROTO((tree, tree, int));
|
||||
static tree ambiguous_decl PROTO((tree, tree, tree,int));
|
||||
static tree build_anon_union_vars PROTO((tree, tree*, int, int));
|
||||
static void check_decl_namespace PROTO((void));
|
||||
|
||||
extern int current_class_depth;
|
||||
|
||||
@ -3228,11 +3227,9 @@ finish_file ()
|
||||
at_eof = 1;
|
||||
|
||||
/* Bad parse errors. Just forget about it. */
|
||||
if (! global_bindings_p () || current_class_type)
|
||||
if (! global_bindings_p () || current_class_type || decl_namespace_list)
|
||||
return;
|
||||
|
||||
check_decl_namespace ();
|
||||
|
||||
start_time = get_run_time ();
|
||||
|
||||
/* Otherwise, GDB can get confused, because in only knows
|
||||
@ -4288,12 +4285,6 @@ pop_decl_namespace ()
|
||||
decl_namespace_list = TREE_CHAIN (decl_namespace_list);
|
||||
}
|
||||
|
||||
static void
|
||||
check_decl_namespace ()
|
||||
{
|
||||
my_friendly_assert (decl_namespace_list == NULL_TREE, 980711);
|
||||
}
|
||||
|
||||
/* Enter a class or namespace scope. */
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user