OSDN Git Service

* parser.c (cp_parser_declaration_seq_opt): Handle pending_lang_change.
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Dec 2002 20:18:38 +0000 (20:18 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Dec 2002 20:18:38 +0000 (20:18 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60644 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 050ba95..db212ba 100644 (file)
@@ -1,3 +1,7 @@
+2002-12-30  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_parser_declaration_seq_opt): Handle pending_lang_change.
+
 2002-12-30  David Edelsohn  <edelsohn@gnu.org>
 
        * parser.c (cp_parser_parameter_declaration_clause): Treat system
index 9474250..cb8dbe9 100644 (file)
@@ -6456,6 +6456,20 @@ cp_parser_declaration_seq_opt (parser)
          continue;
        }
 
+      /* The C lexer modifies PENDING_LANG_CHANGE when it wants the
+        parser to enter or exit implict `extern "C"' blocks.  */
+      while (pending_lang_change > 0)
+       {
+         push_lang_context (lang_name_c);
+         --pending_lang_change;
+       }
+      while (pending_lang_change < 0)
+       {
+         pop_lang_context ();
+         ++pending_lang_change;
+       }
+
+      /* Parse the declaration itself.  */
       cp_parser_declaration (parser);
     }
 }