From d5467e204adf7c98864d02695dca7e09509ff42d Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 17 Sep 1997 02:23:05 +0000 Subject: [PATCH] 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 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/call.c | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index edfddc97ba7..148691be9c1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ Tue Sep 16 14:06:56 1997 Jason Merrill + * 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 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 6836a6c5cdd..48b5abf4743 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -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); -- 2.30.2