re PR c++/28051 (ICE on invalid conversion operator)
PR c++/28051 * mangle.c (mangle_conv_op_name_for_type): Check for invalid types. *name-lookup.c (push_class_level_binding): Robustify. (do_class_using_decl): Return early if name is error_mark_node. From-SVN: r114985
This commit is contained in:
parent
8df7d4395a
commit
0fdc23b94d
|
@ -1,3 +1,11 @@
|
|||
2006-06-25 Lee Millward <lee.millward@gmail.com>
|
||||
|
||||
PR c++/28051
|
||||
* mangle.c (mangle_conv_op_name_for_type): Check for
|
||||
invalid types.
|
||||
* name-lookup.c (push_class_level_binding): Robustify.
|
||||
(do_class_using_decl): Return early if name is error_mark_node.
|
||||
|
||||
2006-06-23 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28114
|
||||
|
|
|
@ -2816,6 +2816,9 @@ mangle_conv_op_name_for_type (const tree type)
|
|||
void **slot;
|
||||
tree identifier;
|
||||
|
||||
if (type == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
if (conv_type_names == NULL)
|
||||
conv_type_names = htab_create_ggc (31, &hash_type, &compare_type, NULL);
|
||||
|
||||
|
|
|
@ -2609,6 +2609,9 @@ push_class_level_binding (tree name, tree x)
|
|||
if (!class_binding_level)
|
||||
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
|
||||
|
||||
if (name == error_mark_node)
|
||||
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, false);
|
||||
|
||||
/* Check for invalid member names. */
|
||||
gcc_assert (TYPE_BEING_DEFINED (current_class_type));
|
||||
/* We could have been passed a tree list if this is an ambiguous
|
||||
|
@ -2763,6 +2766,9 @@ do_class_using_decl (tree scope, tree name)
|
|||
tree base_binfo;
|
||||
int i;
|
||||
|
||||
if (name == error_mark_node)
|
||||
return NULL_TREE;
|
||||
|
||||
if (!scope || !TYPE_P (scope))
|
||||
{
|
||||
error ("using-declaration for non-member at class scope");
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2006-06-25 Lee Millward <lee.millward@gmail.com>
|
||||
|
||||
PR c++/28051
|
||||
* g++.dg/template/using13.C: New test.
|
||||
|
||||
2006-06-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR fortran/28081
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
//PR c++/28051
|
||||
|
||||
template<int> struct A {};
|
||||
|
||||
template<int N> struct B : A<N>
|
||||
{
|
||||
using A<N>::operator typename A<N>::X; // { dg-error "no type named" }
|
||||
};
|
||||
|
||||
B<0> b;
|
||||
|
Loading…
Reference in New Issue