]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cp:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Jan 2001 11:30:22 +0000 (11:30 +0000)
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Jan 2001 11:30:22 +0000 (11:30 +0000)
* decl.c (struct binding_level): Adjust class_shadowed comments
to reflect reality.
(push_class_level_binding): Ajust comments to reflect reality.
Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
Don't set TREE_VALUE on the class_shadowed list.
testsuite:
* g++.old-deja/g++.other/lookup16.C: Remove XFAIL.

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

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.other/lookup16.C

index 0f4e41c18a513fd0ed288ab460d7daa9f38a6d64..9e4b99edcb98a745c5f3f2e82cb900e78394b8b7 100644 (file)
@@ -1,3 +1,11 @@
+2001-01-08  Nathan Sidwell  <nathan@acm.org>
+
+       * decl.c (struct binding_level): Adjust class_shadowed comments
+       to reflect reality.
+       (push_class_level_binding): Ajust comments to reflect reality.
+       Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
+       Don't set TREE_VALUE on the class_shadowed list.
+
 2001-01-07  Mark Mitchell  <mark@codesourcery.com>
 
        * decl2.c (grokfield): Don't accept `asm' specifiers for
index 636b50c43d6ed15718abbcea308be226cc646276..e15e77c479b95266752eac98ac32aa22445a846a 100644 (file)
@@ -391,15 +391,13 @@ struct binding_level
 
     /* If this binding level is the binding level for a class, then
        class_shadowed is a TREE_LIST.  The TREE_PURPOSE of each node
-       is the name of an entity bound in the class; the TREE_VALUE is
-       the IDENTIFIER_CLASS_VALUE before we entered the class.  Thus,
-       when leaving class scope, we can restore the
-       IDENTIFIER_CLASS_VALUE by walking this list.  The TREE_TYPE is
+       is the name of an entity bound in the class.  The TREE_TYPE is
        the DECL bound by this name in the class.  */
     tree class_shadowed;
 
     /* Similar to class_shadowed, but for IDENTIFIER_TYPE_VALUE, and
-       is used for all binding levels.  */
+       is used for all binding levels. In addition the TREE_VALUE is the
+       IDENTIFIER_TYPE_VALUE before we entered the class.  */
     tree type_shadowed;
 
     /* A TREE_LIST.  Each TREE_VALUE is the LABEL_DECL for a local
@@ -4408,9 +4406,8 @@ push_class_level_binding (name, x)
       else
        old_decl = BINDING_VALUE (binding);
 
-      /* There was already a binding for X containing fewer
-        functions than are named in X.  Find the previous
-        declaration of X on the class-shadowed list, and update it.  */
+      /* Find the previous binding of name on the class-shadowed
+         list, and update it.  */
       for (shadow = class_binding_level->class_shadowed;
           shadow;
           shadow = TREE_CHAIN (shadow))
@@ -4420,17 +4417,17 @@ push_class_level_binding (name, x)
            BINDING_VALUE (binding) = x;
            INHERITED_VALUE_BINDING_P (binding) = 0;
            TREE_TYPE (shadow) = x;
+           IDENTIFIER_CLASS_VALUE (name) = x;
            return;
          }
     }
 
   /* If we didn't replace an existing binding, put the binding on the
-     stack of bindings for the identifier, and update
-     IDENTIFIER_CLASS_VALUE.  */
+     stack of bindings for the identifier, and update the shadowed list.  */
   if (push_class_binding (name, x))
     {
       class_binding_level->class_shadowed
-       = tree_cons (name, IDENTIFIER_CLASS_VALUE (name),
+       = tree_cons (name, NULL,
                     class_binding_level->class_shadowed);
       /* Record the value we are binding NAME to so that we can know
         what to pop later.  */
index 87b4b6f6cec56f73d4e49a334134ab6c3b526626..0e7dd5ac5aa14631bba09209d98bf15358467d59 100644 (file)
@@ -1,3 +1,7 @@
+2001-01-08  Nathan Sidwell  <nathan@acm.org>
+
+       * g++.old-deja/g++.other/lookup16.C: Remove XFAIL.
+
 2001-01-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.c-torture/execute/stdio-opt-3.c: New test.
index 32fc477a6183843c105f9e7ad01e4aacacf50de5..150eb07aa0d0b17611d57913752dbdaed2c8c0b1 100644 (file)
@@ -2,11 +2,10 @@
 // Copyright (C) 1999 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Aug 1999 <nathan@acm.org>
 
+// Bug 3
 // typenames are not injected early enough, [basic.scope.pdecl]3.3.1/4
 // indicates this should compile.
 
-// excess errors test - XFAIL
-
 struct A {
 };