Commit 6a837908 by Simon Martin Committed by H.J. Lu

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
parent a5f805df
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;
}
......
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
......
/* 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment