From 544aef8cc9fc31e1e7a4edb381c275e7719b26ed Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Thu, 27 Mar 2003 14:04:28 +0000 Subject: [PATCH] re PR c++/10224 (Problem with integral constants (+ICE)) cp: PR c++/10224 * pt.c (lookup_template_class): Only check instantiated args if they do not contain template parameters. testsuite: PR c++/10224 * g++.dg/template/arg3.C: New test. From-SVN: r64923 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 4 ++-- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/g++.dg/template/arg3.C | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/template/arg3.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8d835ece2c9..c7476790499 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-03-27 Nathan Sidwell + + PR c++/10224 + * pt.c (lookup_template_class): Only check instantiated args if + they do not contain template parameters. + 2003-03-27 Nathan Sidwell PR c++/10158 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index c04c602d867..a79b8a57846 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -4181,7 +4181,7 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope, complain) arglist2 = coerce_template_parms (parmlist, arglist, template, complain, /*require_all_args=*/1); if (arglist2 == error_mark_node - || (!processing_template_decl + || (!uses_template_parms (arglist2) && check_instantiated_args (template, arglist2, complain))) POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); @@ -4272,7 +4272,7 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope, complain) complain, /*require_all_args=*/1); if (arglist == error_mark_node - || (!processing_template_decl + || (!uses_template_parms (INNERMOST_TEMPLATE_ARGS (arglist)) && check_instantiated_args (template, INNERMOST_TEMPLATE_ARGS (arglist), complain))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cb6431052c1..405556d9d81 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2003-03-27 Nathan Sidwell + PR c++/10224 + * g++.dg/template/arg3.C: New test. + PR c++/10158 * g++.dg/template/friend18.C: New test. diff --git a/gcc/testsuite/g++.dg/template/arg3.C b/gcc/testsuite/g++.dg/template/arg3.C new file mode 100644 index 00000000000..050aa33bcde --- /dev/null +++ b/gcc/testsuite/g++.dg/template/arg3.C @@ -0,0 +1,17 @@ +// { dg-do compile } + +// Copyright (C) 2003 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 27 Mar 2003 + +// PR 10224. Rejected a valid constant argument. + +template struct X { + struct I {}; +}; + +template struct Y { + static const bool selector = true; + typedef typename X::I helper; +}; + +Y i; -- 2.30.2