From 6bc7be5f89c0c51e089af3cddd2009ef3d0c889c Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 13 Feb 1998 14:44:00 +0000 Subject: [PATCH] * pt.c (determine_specialization): Give better errors. From-SVN: r17970 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/pt.c | 16 +++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3dfba2e3bdd..bf101322fea 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +Fri Feb 13 14:30:35 1998 Jason Merrill + + * pt.c (determine_specialization): Give better errors. + Fri Feb 13 14:06:22 1998 Mike Stump * init.c (build_new): Propagate error_mark_node up. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index e4fa8bb29b9..8d15cb009de 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -519,7 +519,15 @@ determine_specialization (template_id, decl, targs_out, tmpl = DECL_TI_TEMPLATE (fn); else if (TREE_CODE (fn) != TEMPLATE_DECL || (need_member_template && !is_member_template (fn))) - continue; + { + if (decls_match (decl, fn)) + { + cp_error ("`template <>' applied to non-specialization `%D'", + fn); + return NULL_TREE; + } + continue; + } else tmpl = fn; @@ -564,8 +572,7 @@ determine_specialization (template_id, decl, targs_out, { no_match: if (complain) - cp_error ("`%D' does not match any template declaration", - template_id); + cp_error ("`%D' does not match any template declaration", decl); return NULL_TREE; } @@ -574,8 +581,7 @@ determine_specialization (template_id, decl, targs_out, ambiguous: if (complain) { - cp_error ("ambiguous template specialization `%D'", - template_id); + cp_error ("ambiguous template specialization `%D'", decl); print_candidates (templates); } return NULL_TREE;