diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 56c613b0aef..8fe52a90c0f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-08-01 Steve Ellcey + + PR c++/28256 + * decl.c (check_initializer): Check for 1 initializer on scalar types. + 2006-08-01 Daniel Jacobowitz PR debug/23336 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index e9cf4b83022..fe73942e9bd 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4730,6 +4730,14 @@ check_initializer (tree decl, tree init, int flags, tree *cleanup) TREE_TYPE (decl) = error_mark_node; init = NULL_TREE; } + else if (!CP_AGGREGATE_TYPE_P (type) + && init && BRACE_ENCLOSED_INITIALIZER_P (init) + && VEC_length (constructor_elt, CONSTRUCTOR_ELTS (init)) != 1) + { + error ("scalar object %qD requires one element in initializer", decl); + TREE_TYPE (decl) = error_mark_node; + init = NULL_TREE; + } if (TREE_CODE (decl) == CONST_DECL) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 261cadc8ae2..e1a69c1dd9a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-08-01 Steve Ellcey + + PR c++/28256 + * g++.dg/init/brace2.C: Change expected error message, add empty init. + 2006-08-01 Daniel Jacobowitz PR debug/23336 diff --git a/gcc/testsuite/g++.dg/init/brace2.C b/gcc/testsuite/g++.dg/init/brace2.C index 5138430e5cb..2af063d5f56 100644 --- a/gcc/testsuite/g++.dg/init/brace2.C +++ b/gcc/testsuite/g++.dg/init/brace2.C @@ -3,6 +3,6 @@ int x = { 2 }; const char * y = { "hello" }; int a = 2; -int b = { 2,3 }; // { dg-error "too many initializers" } +int b = { 2,3 }; // { dg-error "requires one element in initializer" } int c = { { 2 } } ; // { dg-error "braces around scalar initializer" } - +int d = {}; // { dg-error "requires one element in initializer" }