From 103b7b1789a26f41d4b47df83a0bb622daf394e6 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Sun, 28 Mar 1993 05:48:46 +0000 Subject: [PATCH] (process_init_constructor, digest_init): Check and set new static var partial_bracket_mentioned. From-SVN: r3899 --- gcc/c-typeck.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 314d91f1978..1bbbfda06d4 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 -- 2.30.2