call.c (build_new_op): Give better error for syntactically correct...
* call.c (build_new_op): Give better error for syntactically correct, but semantically invalid, use of undeclared template. From-SVN: r15506
This commit is contained in:
parent
6c1d570678
commit
d5467e204a
|
@ -1,5 +1,8 @@
|
|||
Tue Sep 16 14:06:56 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* call.c (build_new_op): Give better error for syntactically
|
||||
correct, but semantically invalid, use of undeclared template.
|
||||
|
||||
* call.c (compare_qual): Handle pmfs.
|
||||
|
||||
* decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
|
||||
|
|
|
@ -4421,7 +4421,7 @@ build_user_type_conversion_1 (totype, expr, flags)
|
|||
(USER_CONV,
|
||||
(DECL_CONSTRUCTOR_P (cand->fn)
|
||||
? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
|
||||
NULL_TREE, cand->fn, cand->convs, cand->basetype_path);
|
||||
expr, cand->fn, cand->convs, cand->basetype_path);
|
||||
ICS_USER_FLAG (cand->second_conv) = 1;
|
||||
if (cand->viable == -1)
|
||||
ICS_BAD_FLAG (cand->second_conv) = 1;
|
||||
|
@ -4672,6 +4672,14 @@ build_new_op (code, flags, arg1, arg2, arg3)
|
|||
|| arg3 == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
/* This can happen if a template takes all non-type parameters, e.g.
|
||||
undeclared_template<1, 5, 72>a; */
|
||||
if (code == LT_EXPR && TREE_CODE (arg1) == TEMPLATE_DECL)
|
||||
{
|
||||
cp_error ("`%D' must be declared before use", arg1);
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
if (code == MODIFY_EXPR)
|
||||
{
|
||||
code2 = TREE_CODE (arg3);
|
||||
|
|
Loading…
Reference in New Issue