+2004-01-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/13094
+ * parser.c (cp_parser_template_argument): Don't call
+ make_unbound_class_template directly.
+ (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
+ UNBOUND_CLASS_TEMPLATE tree node.
+
2004-01-02 Richard Sandiford <rsandifo@redhat.com>
PR target/12729
if (!cp_parser_error_occurred (parser))
{
/* Figure out what is being referred to. */
- argument = cp_parser_lookup_name_simple (parser, argument);
- if (template_p)
- argument = make_unbound_class_template (TREE_OPERAND (argument, 0),
- TREE_OPERAND (argument, 1),
- tf_error);
- else if (TREE_CODE (argument) != TEMPLATE_DECL)
+ argument = cp_parser_lookup_name (parser, argument,
+ /*is_type=*/false,
+ /*is_template=*/template_p,
+ /*is_namespace=*/false,
+ /*check_dependency=*/true);
+ if (TREE_CODE (argument) != TEMPLATE_DECL
+ && TREE_CODE (argument) != UNBOUND_CLASS_TEMPLATE)
cp_parser_error (parser, "expected template-name");
}
if (cp_parser_parse_definitely (parser))
name,
/*complain=*/1));
else if (is_template)
- decl = TYPE_NAME (make_unbound_class_template (parser->scope,
- name,
- /*complain=*/1));
+ decl = make_unbound_class_template (parser->scope,
+ name,
+ /*complain=*/1);
else
decl = build_nt (SCOPE_REF, parser->scope, name);
}
my_friendly_assert (DECL_P (decl)
|| TREE_CODE (decl) == OVERLOAD
|| TREE_CODE (decl) == SCOPE_REF
+ || TREE_CODE (decl) == UNBOUND_CLASS_TEMPLATE
|| BASELINK_P (decl),
20000619);