gcc/cp/
PR c++/51194
* pt.c (lookup_template_class_1): Go out early if the type of the
template is error_mark_node.
gcc/testsuite/
PR c++/51194
* g++.dg/cpp0x/alias-decl-15.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181523
138bc75d-0d04-0410-961f-
82ee72b054a4
+2011-11-20 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/51194
+ * pt.c (lookup_template_class_1): Go out early if the type of the
+ template is error_mark_node.
+
2011-11-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51216
int is_dependent_type;
int use_partial_inst_tmpl = false;
+ if (template_type == error_mark_node)
+ /* An error occured while building the template TEMPL, and a
+ diagnostic has most certainly been emitted for that
+ already. Let's propagate that error. */
+ return error_mark_node;
+
gen_tmpl = most_general_template (templ);
parmlist = DECL_TEMPLATE_PARMS (gen_tmpl);
parm_depth = TMPL_PARMS_DEPTH (parmlist);
+2011-11-20 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/51194
+ * g++.dg/cpp0x/alias-decl-15.C: New test.
+
2011-11-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51216
--- /dev/null
+// Origin PR c++/51194
+// { dg-options "-std=c++0x" }
+
+template<class U, class V> //#1
+struct foo {}; // { dg-error "provided for|foo" }
+
+template<class U, class V=char>
+struct P {};
+
+template<template<class... U> class... TT>
+struct bar {
+ template<class... Args>
+ using mem = P<TT<Args...>...>;//#2 { dg-error "wrong number of|arguments" }
+};
+
+bar<foo>::mem<int, char> b;//#3 { dg-error "invalid type" }
+