[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.

From-SVN: r258793
This commit is contained in:
Alexandre Oliva 2018-03-23 04:09:06 +00:00 committed by Alexandre Oliva
parent 5904d9d923
commit 631270a5ce
4 changed files with 31 additions and 2 deletions

View file

@ -1,4 +1,8 @@
2018-03-22 Alexandre Oliva <aoliva@redhat.com>
2018-03-23 Alexandre Oliva <aoliva@redhat.com>
PR c++/71251
* parser.c (cp_parser_alias_declaration): Call
parser_check_template_parameters.
PR c++/84789
* pt.c (resolve_typename_type): Drop assert that stopped

View file

@ -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;

View file

@ -1,4 +1,7 @@
2018-03-22 Alexandre Oliva <aoliva@redhat.com>
2018-03-23 Alexandre Oliva <aoliva@redhat.com>
PR c++/71251
* g++.dg/cpp0x/pr71251.C: New.
PR c++/84789
* g++.dg/template/pr84789.C: New.

View file

@ -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;
};