From 6c02751b14035a957cd17450909605fa973b3b27 Mon Sep 17 00:00:00 2001 From: Volker Reichelt Date: Wed, 2 Feb 2005 21:58:46 +0000 Subject: [PATCH] re PR c++/17413 (local classes as template argument) PR c++/17413 * pt.c (check_instantiated_args): Improve error message. Fix logic when to print its second part. PR c++/17413 * g++.dg/template/local4.C: Tweak. From-SVN: r94618 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 6 ++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/local4.C | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 284a933..0aca2e0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,11 @@ 2005-02-02 Volker Reichelt + PR c++/17413 + * pt.c (check_instantiated_args): Improve error message. + Fix logic when to print its second part. + +2005-02-02 Volker Reichelt + * cp-tree.h (complete_type_or_else): Remove macro. (complete_type_or_diagnostic): Rename to complete_type_or_else and remove last argument. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3252f36..0e6ce13 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -8903,6 +8903,7 @@ check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain) { int ix, len = DECL_NTPARMS (tmpl); bool result = false; + bool error_p = complain & tf_error; for (ix = 0; ix != len; ix++) { @@ -8920,10 +8921,11 @@ check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain) if (nt) { if (TYPE_ANONYMOUS_P (nt)) - error ("%qT uses anonymous type", t); + error ("%qT is/uses anonymous type", t); else error ("%qT uses local type %qT", t, nt); result = true; + error_p = true; } /* In order to avoid all sorts of complications, we do not allow variably-modified types as template arguments. */ @@ -8945,7 +8947,7 @@ check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain) result = true; } } - if (result && complain & tf_error) + if (result && error_p) error (" trying to instantiate %qD", tmpl); return result; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a1dbc3f..e83ff1a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-02-02 Volker Reichelt + + PR c++/17413 + * g++.dg/template/local4.C: Tweak. + 2005-02-02 Richard Sandiford PR tree-optimization/19578 diff --git a/gcc/testsuite/g++.dg/template/local4.C b/gcc/testsuite/g++.dg/template/local4.C index 53a5198..748810b 100644 --- a/gcc/testsuite/g++.dg/template/local4.C +++ b/gcc/testsuite/g++.dg/template/local4.C @@ -7,5 +7,5 @@ int main () { // We do not simply use "local|match" on line 10 because we want to // make sure that "local" appears. // { dg-error "local" "" { target *-*-* } 10 } - foo (); // { dg-error "match" } + foo (); // { dg-error "trying|match" } } -- 2.7.4