re PR c++/9264 ([parser] ICE on invalid octal constant)

* cp-tree.h (get_arglist_len_in_bytes): Remove.

	PR c++/9264
	* parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
	typeame types more robustly.

	PR c++/9172
	* g++.dg/parse/typename1.C: New file.

From-SVN: r61236
This commit is contained in:
Mark Mitchell 2003-01-13 00:16:12 +00:00 committed by Mark Mitchell
parent e8f2b18d0e
commit 8fa1ad0e6a
4 changed files with 21 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2003-01-12 Mark Mitchell <mark@codesourcery.com>
* cp-tree.h (get_arglist_len_in_bytes): Remove.
PR c++/9264
* parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
typeame types more robustly.
2003-01-11 Phil Edwards <pme@gcc.gnu.org>
* parser.c: Fix comment typos.

View File

@ -3581,7 +3581,6 @@ extern GTY(()) operator_name_info_t assignment_operator_name_info
/* in call.c */
extern bool check_dtor_name (tree, tree);
extern int get_arglist_len_in_bytes (tree);
extern tree build_vfield_ref (tree, tree);
extern tree build_scoped_method_call (tree, tree, tree, tree);

View File

@ -9012,10 +9012,14 @@ cp_parser_elaborated_type_specifier (parser, is_friend, is_declaration)
/*current_scope_valid_p=*/false);
/* Look for the nested-name-specifier. */
if (tag_type == typename_type)
cp_parser_nested_name_specifier (parser,
/*typename_keyword_p=*/true,
/*check_dependency_p=*/true,
/*type_p=*/true);
{
if (cp_parser_nested_name_specifier (parser,
/*typename_keyword_p=*/true,
/*check_dependency_p=*/true,
/*type_p=*/true)
== error_mark_node)
return error_mark_node;
}
else
/* Even though `typename' is not present, the proposed resolution
to Core Issue 180 says that in `class A<T>::B', `B' should be

View File

@ -0,0 +1,5 @@
template <class baz>
struct bar
{
typedef typename baz::typename rebind<int> foo; // { dg-error "" }
};