* parser.c (cp_parser_parameter_declaration_clause): Treat system
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Dec 2002 18:21:49 +0000 (18:21 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Dec 2002 18:21:49 +0000 (18:21 +0000)
        header as extern "C" if NO_IMPLICIT_EXTERN_C undefined.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60639 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 75ea230..ccc942e 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 70bf5ef..9474250 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