OSDN Git Service

PR c++/13166
authorlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2003 14:44:59 +0000 (14:44 +0000)
committerlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2003 14:44:59 +0000 (14:44 +0000)
* parser.c (cp_parser_late_parsing_default_args): Make sure the
context is a class before calling push_nested_class and
pop_nested_class.

* g++.dg/parse/defarg6.C: New test.

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

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/defarg6.C [new file with mode: 0644]

index 33a772f..6e2239b 100644 (file)
@@ -1,3 +1,10 @@
+2003-12-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/13166
+       * parser.c (cp_parser_late_parsing_default_args): Make sure the
+       context is a class before calling push_nested_class and
+       pop_nested_class.
+
 2003-12-03  James E Wilson  <wilson@specifixinc.com>
 
        * g++spec.c (lang_specific_driver): Delete USE_LIBUNWIND_EXCEPTIONS
 
 2003-12-02  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
-       PR c++/10126\r
-       * pt.c (convert_nontype_argument): Handle default conversions\r
-       while converting a pointer to member function.\r
+       PR c++/10126
+       * pt.c (convert_nontype_argument): Handle default conversions
+       while converting a pointer to member function.
 
 2003-12-02  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
-       PR c++/12573\r
-       * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by\r
-       looking into them recursively.\r
+       PR c++/12573
+       * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
+       looking into them recursively.
 
 2003-12-02  Richard Henderson  <rth@redhat.com>
 
index 1ce8cd7..5f1b473 100644 (file)
@@ -14239,10 +14239,10 @@ cp_parser_late_parsing_default_args (cp_parser *parser, tree fn)
       saved_local_variables_forbidden_p = parser->local_variables_forbidden_p;
       parser->local_variables_forbidden_p = true;
        /* Parse the assignment-expression.  */
-      if (DECL_CONTEXT (fn))
+      if (DECL_CLASS_SCOPE_P (fn))
        push_nested_class (DECL_CONTEXT (fn));
       TREE_PURPOSE (parameters) = cp_parser_assignment_expression (parser);
-      if (DECL_CONTEXT (fn))
+      if (DECL_CLASS_SCOPE_P (fn))
        pop_nested_class ();
 
        /* Restore saved state.  */
index 5a00a7a..376783e 100644 (file)
@@ -1,3 +1,8 @@
+2003-12-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/13166
+       * g++.dg/parse/defarg6.C: New test.
+
 2003-12-05  Hans-Peter Nilsson  <hp@axis.com>
 
        PR target/13256
diff --git a/gcc/testsuite/g++.dg/parse/defarg6.C b/gcc/testsuite/g++.dg/parse/defarg6.C
new file mode 100644 (file)
index 0000000..827b605
--- /dev/null
@@ -0,0 +1,11 @@
+// { dg-do compile }
+
+// Origin: Falk Hueffner <falk@debian.org>
+
+// PR c++/13166: ICE default function argument for friend declaration.
+
+namespace sc_dt {
+    class sc_length_param {
+       friend int compare_unsigned(int if_v_signed = 0) {}
+    };
+}