mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-23 01:30:29 +08:00
re PR c++/29727 (ICE on invalid initializer for template member)
gcc/cp/ 2009-03-27 Simon Martin <simartin@users.sourceforge.net> PR c++/29727 * decl.c (check_array_designated_initializer): Handle error_mark_node. gcc/testsuite/ 2009-03-27 Simon Martin <simartin@users.sourceforge.net> PR c++/29727 * g++.dg/init/error2.C: New test. From-SVN: r145104
This commit is contained in:
parent
a5f805df58
commit
6a837908f9
@ -1,3 +1,8 @@
|
||||
2009-03-27 Simon Martin <simartin@users.sourceforge.net>
|
||||
|
||||
PR c++/29727
|
||||
* decl.c (check_array_designated_initializer): Handle error_mark_node.
|
||||
|
||||
2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
||||
|
||||
PR c++/35652
|
||||
|
@ -4419,9 +4419,15 @@ check_array_designated_initializer (const constructor_elt *ce)
|
||||
{
|
||||
/* The parser only allows identifiers as designated
|
||||
initializers. */
|
||||
gcc_assert (TREE_CODE (ce->index) == IDENTIFIER_NODE);
|
||||
error ("name %qD used in a GNU-style designated "
|
||||
"initializer for an array", ce->index);
|
||||
if (ce->index == error_mark_node)
|
||||
error ("name used in a GNU-style designated "
|
||||
"initializer for an array");
|
||||
else
|
||||
{
|
||||
gcc_assert (TREE_CODE (ce->index) == IDENTIFIER_NODE);
|
||||
error ("name %qD used in a GNU-style designated "
|
||||
"initializer for an array", ce->index);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-03-27 Simon Martin <simartin@users.sourceforge.net>
|
||||
|
||||
PR c++/29727
|
||||
* g++.dg/init/error2.C: New test.
|
||||
|
||||
2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
||||
|
||||
PR c++/35652
|
||||
|
15
gcc/testsuite/g++.dg/init/error2.C
Normal file
15
gcc/testsuite/g++.dg/init/error2.C
Normal file
@ -0,0 +1,15 @@
|
||||
/* PR c++/29727 */
|
||||
/* { dg-do "compile" } */
|
||||
|
||||
template<int> struct A
|
||||
{
|
||||
static int a[1];
|
||||
};
|
||||
template<int N> int A<N>::a[1] = { X:0 }; /* { dg-error "does not allow designated|was not declared|designated initializer for an array" } */
|
||||
|
||||
void foo()
|
||||
{
|
||||
A<0>::a;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user