In gcc/c-family/: 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
authorNicola Pero <nicola.pero@meta-innovation.com>
Thu, 14 Apr 2011 19:34:06 +0000 (19:34 +0000)
committerNicola Pero <nicola@gcc.gnu.org>
Thu, 14 Apr 2011 19:34:06 +0000 (19:34 +0000)
In gcc/c-family/:
2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>

* stub-objc.c (objc_declare_protocols): Renamed to
objc_declare_protocol.
* c-objc.h: Likewise.

In gcc/:
2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>

* c-parser.c (c_parser_objc_protocol_definition): Updated for
change from objc_declare_protocols() to objc_declare_protocol().

In gcc/objc/:
2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>

* objc-act.c (objc_declare_protocols): Renamed to
objc_declare_protocol.  Changed first argument to be an identifier
instead of a tree chain of identifiers, so that callers don't have
to create a temporary tree chain.

In gcc/cp/:
2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>

* parser.c (cp_parser_objc_protocol_declaration): Updated for
change from objc_declare_protocols() to objc_declare_protocol().

From-SVN: r172444

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-objc.h
gcc/c-family/stub-objc.c
gcc/c-parser.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/objc/ChangeLog
gcc/objc/objc-act.c

index 010f7813ddd7c374bf91ab78e9987610a5d33af2..b60fdbc6f41b425232742164e387a640cad6a49d 100644 (file)
@@ -1,3 +1,8 @@
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * c-parser.c (c_parser_objc_protocol_definition): Updated for
+       change from objc_declare_protocols() to objc_declare_protocol().
+
 2011-04-14  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/sse.md (sse4_1): New mode attribute.
index 4b474748f5092e7c8534f8fdec158e1c2bd8df6b..db96f89644117c6901124f07b080f0c0ab5669fe 100644 (file)
@@ -1,3 +1,9 @@
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * stub-objc.c (objc_declare_protocols): Renamed to
+       objc_declare_protocol.
+       * c-objc.h: Likewise.
+       
 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        * stub-objc.c (objc_declare_class): Updated argument name.
index 8f7bd622da094f1117c45ee1f4f16f28be65f6f4..08433aef36c5f06be4dd8fc4ad86eea8d78cfaa1 100644 (file)
@@ -52,7 +52,7 @@ extern int objc_is_public (tree, tree);
 extern tree objc_is_id (tree);
 extern void objc_declare_alias (tree, tree);
 extern void objc_declare_class (tree);
-extern void objc_declare_protocols (tree, tree);
+extern void objc_declare_protocol (tree, tree);
 extern tree objc_build_message_expr (tree, tree);
 extern tree objc_finish_message_expr (tree, tree, tree, tree*);
 extern tree objc_build_selector_expr (location_t, tree);
index 683472126f769081ef843083e3960745dfabcdb7..4e235ff4db6a1e9d9da52a90d2373572fb5fd277 100644 (file)
@@ -115,7 +115,7 @@ objc_declare_class (tree ARG_UNUSED (identifier))
 }
 
 void
-objc_declare_protocols (tree ARG_UNUSED (list), tree ARG_UNUSED (attributes))
+objc_declare_protocol (tree ARG_UNUSED (name), tree ARG_UNUSED (attributes))
 {
 }
 
index 8000b755af5a013667cf33d88160c425b9ba4b8c..b61ebdd1ea8bc8f4a76c198df676a6eaa227945a 100644 (file)
@@ -7076,7 +7076,6 @@ c_parser_objc_protocol_definition (c_parser *parser, tree attributes)
   if (c_parser_peek_2nd_token (parser)->type == CPP_COMMA
       || c_parser_peek_2nd_token (parser)->type == CPP_SEMICOLON)
     {
-      tree list = NULL_TREE;
       /* Any identifiers, including those declared as type names, are
         OK here.  */
       while (true)
@@ -7088,7 +7087,7 @@ c_parser_objc_protocol_definition (c_parser *parser, tree attributes)
              break;
            }
          id = c_parser_peek_token (parser)->value;
-         list = chainon (list, build_tree_list (NULL_TREE, id));
+         objc_declare_protocol (id, attributes);
          c_parser_consume_token (parser);
          if (c_parser_next_token_is (parser, CPP_COMMA))
            c_parser_consume_token (parser);
@@ -7096,7 +7095,6 @@ c_parser_objc_protocol_definition (c_parser *parser, tree attributes)
            break;
        }
       c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>");
-      objc_declare_protocols (list, attributes);
     }
   else
     {
index d2d68ecd2b375ba90734a4a3ef5fb19a7c62f6ce..80c96e1e60b07074f1dfa615fb03ad8c2e123e03 100644 (file)
@@ -1,3 +1,8 @@
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_protocol_declaration): Updated for
+       change from objc_declare_protocols() to objc_declare_protocol().
+
 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
 
        PR objc++/48479
index 7ffa8ba2a322c7bc388c0507bb7506877c65b620..ba331aeda713eac97137c09bbfb44c08e462a918 100644 (file)
@@ -22319,7 +22319,8 @@ cp_parser_objc_protocol_declaration (cp_parser* parser, tree attributes)
     {
       tok = cp_lexer_peek_token (parser->lexer);
       error_at (tok->location, "identifier expected after %<@protocol%>");
-      goto finish;
+      cp_parser_consume_semicolon_at_end_of_statement (parser);
+      return;
     }
 
   /* See if we have a forward declaration or a definition.  */
@@ -22328,9 +22329,21 @@ cp_parser_objc_protocol_declaration (cp_parser* parser, tree attributes)
   /* Try a forward declaration first.  */
   if (tok->type == CPP_COMMA || tok->type == CPP_SEMICOLON)
     {
-      objc_declare_protocols (cp_parser_objc_identifier_list (parser), 
-                             attributes);
-     finish:
+      while (true)
+       {
+         tree id;
+         
+         id = cp_parser_identifier (parser);
+         if (id == error_mark_node)
+           break;
+         
+         objc_declare_protocol (id, attributes);
+         
+         if(cp_lexer_next_token_is (parser->lexer, CPP_COMMA))
+           cp_lexer_consume_token (parser->lexer);
+         else
+           break;
+       }
       cp_parser_consume_semicolon_at_end_of_statement (parser);
     }
 
index f39cb0a582cefaed3e525f80f3a036dd36438d43..060fc69fd2ed1d0c9a3ed5b85ad5d37e0790e744 100644 (file)
@@ -1,3 +1,10 @@
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * objc-act.c (objc_declare_protocols): Renamed to
+       objc_declare_protocol.  Changed first argument to be an identifier
+       instead of a tree chain of identifiers, so that callers don't have
+       to create a temporary tree chain.
+
 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        * objc-act.c (objc_declare_class): Changed to take a single
index c68f628466c7b6b98fd93f75fd260371222f529b..f75fa75a865bbf659310a5bd2510916a676ec51a 100644 (file)
@@ -7863,9 +7863,8 @@ lookup_protocol (tree ident, bool warn_if_deprecated, bool definition_required)
    they are already declared or defined, the function has no effect.  */
 
 void
-objc_declare_protocols (tree names, tree attributes)
+objc_declare_protocol (tree name, tree attributes)
 {
-  tree list;
   bool deprecated = false;
 
 #ifdef OBJCPLUS
@@ -7890,29 +7889,25 @@ objc_declare_protocols (tree names, tree attributes)
        }
     }
 
-  for (list = names; list; list = TREE_CHAIN (list))
+  if (lookup_protocol (name, /* warn if deprecated */ false,
+                      /* definition_required */ false) == NULL_TREE)
     {
-      tree name = TREE_VALUE (list);
-
-      if (lookup_protocol (name, /* warn if deprecated */ false,
-                          /* definition_required */ false) == NULL_TREE)
+      tree protocol = make_node (PROTOCOL_INTERFACE_TYPE);
+      
+      TYPE_LANG_SLOT_1 (protocol)
+       = make_tree_vec (PROTOCOL_LANG_SLOT_ELTS);
+      PROTOCOL_NAME (protocol) = name;
+      PROTOCOL_LIST (protocol) = NULL_TREE;
+      add_protocol (protocol);
+      PROTOCOL_DEFINED (protocol) = 0;
+      PROTOCOL_FORWARD_DECL (protocol) = NULL_TREE;
+      
+      if (attributes)
        {
-         tree protocol = make_node (PROTOCOL_INTERFACE_TYPE);
-
-         TYPE_LANG_SLOT_1 (protocol)
-           = make_tree_vec (PROTOCOL_LANG_SLOT_ELTS);
-         PROTOCOL_NAME (protocol) = name;
-         PROTOCOL_LIST (protocol) = NULL_TREE;
-         add_protocol (protocol);
-         PROTOCOL_DEFINED (protocol) = 0;
-         PROTOCOL_FORWARD_DECL (protocol) = NULL_TREE;
-         
-         if (attributes)
-           {
-             TYPE_ATTRIBUTES (protocol) = attributes;
-             if (deprecated)
-               TREE_DEPRECATED (protocol) = 1;
-           }
+         /* TODO: Do we need to store the attributes here ? */
+         TYPE_ATTRIBUTES (protocol) = attributes;
+         if (deprecated)
+           TREE_DEPRECATED (protocol) = 1;
        }
     }
 }