mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-12 09:44:57 +08:00
re PR c++/38646 (ICE with invalid specialization of variadic template)
gcc/cp/ 2009-11-20 Simon Martin <simartin@users.sourceforge.net> PR c++/38646 * pt.c (process_partial_specialization): Do not turn wrongly located parameter pack arguments into error_mark_node. Split too long lines into two. gcc/testsuite/ 2009-11-20 Simon Martin <simartin@users.sourceforge.net> PR c++/38646 * g++.dg/cpp0x/pr38646.C: New test. From-SVN: r154378
This commit is contained in:
parent
70826946ea
commit
2282976b05
@ -1,3 +1,10 @@
|
||||
2009-11-20 Simon Martin <simartin@users.sourceforge.net>
|
||||
|
||||
PR c++/38646
|
||||
* pt.c (process_partial_specialization): Do not turn wrongly located
|
||||
parameter pack arguments into error_mark_node.
|
||||
Split too long lines into two.
|
||||
|
||||
2009-11-20 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/42060
|
||||
|
@ -3795,12 +3795,11 @@ process_partial_specialization (tree decl)
|
||||
|| (!packed_args && i < nargs - 1))
|
||||
{
|
||||
if (TREE_CODE (arg) == EXPR_PACK_EXPANSION)
|
||||
error ("parameter pack argument %qE must be at the end of the template argument list", arg);
|
||||
error ("parameter pack argument %qE must be at the "
|
||||
"end of the template argument list", arg);
|
||||
else
|
||||
error ("parameter pack argument %qT must be at the end of the template argument list", arg);
|
||||
|
||||
if (packed_args)
|
||||
TREE_VEC_ELT (packed_args, j) = error_mark_node;
|
||||
error ("parameter pack argument %qT must be at the "
|
||||
"end of the template argument list", arg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-11-20 Simon Martin <simartin@users.sourceforge.net>
|
||||
|
||||
PR c++/38646
|
||||
* g++.dg/cpp0x/pr38646.C: New test.
|
||||
|
||||
2009-11-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* gcc.dg/c99-stdint-6.c: Set dg-options for alpha*-dec-osf5*.
|
||||
|
12
gcc/testsuite/g++.dg/cpp0x/pr38646.C
Normal file
12
gcc/testsuite/g++.dg/cpp0x/pr38646.C
Normal file
@ -0,0 +1,12 @@
|
||||
/* PR c++/38646 */
|
||||
/* { dg-do "compile" } */
|
||||
/* { dg-options "-std=c++0x" } */
|
||||
|
||||
template<int...> struct A;
|
||||
|
||||
template<int... N> struct A<N..., N...> /* { dg-error "must be at the end" } */
|
||||
{
|
||||
template<typename> struct B;
|
||||
|
||||
template<typename T> struct B<T*> {};
|
||||
};
|
Loading…
Reference in New Issue
Block a user