parser.c (cp_parser_parameter_declaration_clause): Treat system header as extern...
authorDavid Edelsohn <edelsohn@gnu.org>
Mon, 30 Dec 2002 18:21:49 +0000 (18:21 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Mon, 30 Dec 2002 18:21:49 +0000 (13:21 -0500)
        * parser.c (cp_parser_parameter_declaration_clause): Treat system
        header as extern "C" if NO_IMPLICIT_EXTERN_C undefined.

From-SVN: r60639

gcc/cp/ChangeLog
gcc/cp/parser.c

index 75ea230839045073ce1845092306654a1439d337..ccc942e32f7465bc30044c4c2c4936aff0a014dd 100644 (file)
@@ -1,3 +1,8 @@
+2002-12-30  David Edelsohn  <edelsohn@gnu.org>
+
+       * parser.c (cp_parser_parameter_declaration_clause): Treat system
+       header as extern "C" if NO_IMPLICIT_EXTERN_C undefined.
+
 2002-12-30  Nathanael Nerode  <neroden@gcc.gnu.org>
 
        * config-lang.in, Make-lang.in, operators.def, cp-tree.def:  
index 70bf5eff4ba21ba2aae02d66ae9511009f76f8ba..94742504145d90b0eee75ab7efc57f290a46dd1a 100644 (file)
@@ -10558,7 +10558,15 @@ cp_parser_parameter_declaration_clause (parser)
     }
   else if (token->type == CPP_CLOSE_PAREN)
     /* There are no parameters.  */
-    return void_list_node;
+    {
+#ifndef NO_IMPLICIT_EXTERN_C
+      if (in_system_header && current_class_type == NULL
+         && current_lang_name == lang_name_c)
+       return NULL_TREE;
+      else
+#endif
+       return void_list_node;
+    }
   /* Check for `(void)', too, which is a special case.  */
   else if (token->keyword == RID_VOID
           && (cp_lexer_peek_nth_token (parser->lexer, 2)->type