aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2018-03-23 04:09:06 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2018-03-23 04:09:06 +0000
commit631270a5cedfad8267a5e7b94901035212713b61 (patch)
tree1b213047c79653678507eef2f63ce198292474f4
parent5904d9d923bd86849209e55550b7876e513f4896 (diff)
downloadgcc-631270a5cedfad8267a5e7b94901035212713b61.zip
gcc-631270a5cedfad8267a5e7b94901035212713b61.tar.gz
gcc-631270a5cedfad8267a5e7b94901035212713b61.tar.bz2
[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
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr71251.C15
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 08ecf21..cdbbd41 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index fd81702..602cc99 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/ChangeLog b/gcc/testsuite/ChangeLog
index 4875ce4..560e6d3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr71251.C b/gcc/testsuite/g++.dg/cpp0x/pr71251.C
new file mode 100644
index 0000000..3df831b
--- /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;
+};