aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-03-28 05:48:46 +0000
committerRichard Stallman <rms@gnu.org>1993-03-28 05:48:46 +0000
commit103b7b1789a26f41d4b47df83a0bb622daf394e6 (patch)
tree83bc27f42ab26f3e43ea76aa512d92d7ade2d09d
parentf41372d40f468e8a1d4b4f26b9660454eb46d359 (diff)
downloadgcc-103b7b1789a26f41d4b47df83a0bb622daf394e6.zip
gcc-103b7b1789a26f41d4b47df83a0bb622daf394e6.tar.gz
gcc-103b7b1789a26f41d4b47df83a0bb622daf394e6.tar.bz2
(process_init_constructor, digest_init):
Check and set new static var partial_bracket_mentioned. From-SVN: r3899
-rw-r--r--gcc/c-typeck.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 314d91f..1bbbfda 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -33,6 +33,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "c-tree.h"
#include "flags.h"
+/* Nonzero if we've already printed a "partly bracketed initializer"
+ message within this initializer. */
+static int partial_bracket_mentioned = 0;
+
extern char *index ();
extern char *rindex ();
@@ -4689,7 +4693,8 @@ pedwarn_init (format, local, ofwhat)
If OFWHAT is nonnull, it specifies what we are initializing, for error
messages. Examples: variable name, variable.member, array[44].
- If OFWHAT is null, the component name is stored on the spelling stack. */
+ If OFWHAT is null, the component name is stored on the spelling stack.
+ (That is true for all nested calls to digest_init.) */
tree
digest_init (type, init, tail, require_constant, constructor_constant, ofwhat)
@@ -4706,6 +4711,11 @@ digest_init (type, init, tail, require_constant, constructor_constant, ofwhat)
= TREE_CODE (init) == CONSTRUCTOR && TREE_TYPE (init) == 0;
tree inside_init = init;
+ /* Make sure there is just one "partially bracketed" message
+ per top-level initializer or constructor. */
+ if (ofwhat != 0)
+ partial_bracket_mentioned = 0;
+
/* By default, assume we use one element from a list.
We correct this later in the sole case where it is not true. */
@@ -5030,8 +5040,10 @@ digest_init (type, init, tail, require_constant, constructor_constant, ofwhat)
OFWHAT is a character string describing the object being initialized,
for error messages. It might be "variable" or "variable.member"
- or "variable[17].member[5]". If OFWHAT is null, the description string
- is stored on the spelling stack. */
+ or "variable[17].member[5]".
+
+ If OFWHAT is null, the description string is stored on the spelling
+ stack. That is always true for recursive calls. */
static tree
process_init_constructor (type, init, elts, constant_value, constant_element,
@@ -5059,7 +5071,11 @@ process_init_constructor (type, init, elts, constant_value, constant_element,
if (elts)
{
if (warn_missing_braces)
- warning ("aggregate has a partly bracketed initializer");
+ {
+ if (! partial_bracket_mentioned)
+ warning ("aggregate has a partly bracketed initializer");
+ partial_bracket_mentioned = 1;
+ }
tail = *elts;
}
else