This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PR c++/71251] out-of-range parms in tmpl arg substitution
On Mar 22, 2018, Jason Merrill <jason@redhat.com> wrote:
> I think we definitely want to move the check down below the
> cp_parser_commit_to_tentative_parse.
This worked. Regstrapped on i686- and x86_64-linux-gnu. Ok to install?
[PR c++/71251] check tmpl parms in template using decl
Check that template using decls have the correct number of parm lists.
for gcc/cp/ChangeLog
PR c++/71251
* parser.c (cp_parser_alias_declaration): Call
parser_check_template_parameters.
for gcc/testsuite/ChangeLog
PR c++/71251
* g++.dg/cpp0x/pr71251.C: New.
---
gcc/cp/parser.c | 7 +++++++
gcc/testsuite/g++.dg/cpp0x/pr71251.C | 15 +++++++++++++++
2 files changed, 22 insertions(+)
create mode 100644 gcc/testsuite/g++.dg/cpp0x/pr71251.C
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index fd817024eacf..602cc991ff6e 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -18965,6 +18965,13 @@ cp_parser_alias_declaration (cp_parser* parser)
ds_alias,
using_token);
+ if (parser->num_template_parameter_lists
+ && !cp_parser_check_template_parameters (parser,
+ /*num_templates=*/0,
+ id_location,
+ /*declarator=*/NULL))
+ return error_mark_node;
+
declarator = make_id_declarator (NULL_TREE, id, sfk_none);
declarator->id_loc = id_location;
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr71251.C b/gcc/testsuite/g++.dg/cpp0x/pr71251.C
new file mode 100644
index 000000000000..3df831bb581d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr71251.C
@@ -0,0 +1,15 @@
+// { dg-do compile { target c++11 } }
+
+template<int,int> template<typename>
+using U = void; // { dg-error "too many" }
+
+template<typename>
+using V = void;
+
+template<typename> struct X {
+ template<typename> template<typename>
+ using U = void; // { dg-error "too many" }
+
+ template<typename>
+ using V = void;
+};
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer