mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-10 03:26:42 +08:00
pt.c (check_explicit_specialization): If DECLARATOR turned into an error_mark_node from lookup_template_function...
* pt.c (check_explicit_specialization): If DECLARATOR turned into an error_mark_node from lookup_template_function, return the same. (determine_specialization): Also make sure TEMPLATE_ID isn't an error_mark_node, before we try to read its operands. * decl.c (grokdeclarator): If we got an error_mark_node from check_explicit_specialization, just return it right back. From-SVN: r20444
This commit is contained in:
parent
38831dfe51
commit
f2e48b67c8
@ -1,3 +1,12 @@
|
||||
1998-06-12 Brendan Kehoe <brendan@cygnus.com>
|
||||
|
||||
* pt.c (check_explicit_specialization): If DECLARATOR turned into
|
||||
an error_mark_node from lookup_template_function, return the same.
|
||||
(determine_specialization): Also make sure TEMPLATE_ID isn't an
|
||||
error_mark_node, before we try to read its operands.
|
||||
* decl.c (grokdeclarator): If we got an error_mark_node from
|
||||
check_explicit_specialization, just return it right back.
|
||||
|
||||
1998-06-12 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
* class.c (instantiate_type): Don't treat template-ids that don't
|
||||
|
@ -10193,6 +10193,11 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
if (decl == NULL_TREE)
|
||||
return NULL_TREE;
|
||||
|
||||
/* Among other times, could occur from check_explicit_specialization
|
||||
returning an error_mark_node. */
|
||||
if (decl == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
if (ctype == NULL_TREE && DECL_LANGUAGE (decl) != lang_c
|
||||
&& (! DECL_USE_TEMPLATE (decl) ||
|
||||
name_mangling_version < 1))
|
||||
|
14
gcc/cp/pt.c
14
gcc/cp/pt.c
@ -784,14 +784,19 @@ determine_specialization (template_id, decl, targs_out,
|
||||
int need_member_template;
|
||||
int complain;
|
||||
{
|
||||
tree fns = TREE_OPERAND (template_id, 0);
|
||||
tree targs_in = TREE_OPERAND (template_id, 1);
|
||||
tree fns, targs_in;
|
||||
tree templates = NULL_TREE;
|
||||
tree fn;
|
||||
int i;
|
||||
|
||||
*targs_out = NULL_TREE;
|
||||
|
||||
if (template_id == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
fns = TREE_OPERAND (template_id, 0);
|
||||
targs_in = TREE_OPERAND (template_id, 1);
|
||||
|
||||
if (fns == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
@ -1084,7 +1089,10 @@ check_explicit_specialization (declarator, decl, template_count, flags)
|
||||
lookup_template_function (fns, NULL_TREE);
|
||||
}
|
||||
|
||||
if (TREE_CODE (TREE_OPERAND (declarator, 0)) == LOOKUP_EXPR)
|
||||
if (declarator == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
if (TREE_CODE (TREE_OPERAND (declarator, 0)) == LOOKUP_EXPR)
|
||||
{
|
||||
/* A friend declaration. We can't do much, because we don't
|
||||
know what this resolves to, yet. */
|
||||
|
Loading…
Reference in New Issue
Block a user