OSDN Git Service

PR c++/13294
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Mar 2004 19:20:50 +0000 (19:20 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Mar 2004 19:20:50 +0000 (19:20 +0000)
        * pt.c (maybe_process_partial_specialization): Remember the
        context of a specialization.

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

gcc/cp/ChangeLog
gcc/cp/pt.c

index e59e9c1..e3d3a26 100644 (file)
@@ -1,3 +1,9 @@
+2004-03-25  Jason Merrill  <jason@redhat.com>
+
+       PR c++/13294
+       * pt.c (maybe_process_partial_specialization): Remember the
+       context of a specialization.
+
 2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>
 
        * cxx-pretty-print.c: Fix comment typos.
index be2f2c7..3e3d0e9 100644 (file)
@@ -733,7 +733,15 @@ maybe_process_partial_specialization (tree type)
        {
          tree tpl_ns = decl_namespace_context (CLASSTYPE_TI_TEMPLATE (type));
          if (is_associated_namespace (current_namespace, tpl_ns))
-           /* Same or super-using namespace.  */;
+           /* Same or super-using namespace.  */
+           {
+             if (DECL_NAMESPACE_SCOPE_P (CLASSTYPE_TI_TEMPLATE (type)))
+               /* If this is a specialization of a namespace-scope class
+                  template, remember the context of the
+                  specialization.  */
+               TYPE_CONTEXT (type) = DECL_CONTEXT (TYPE_NAME (type))
+                 = FROB_CONTEXT (current_namespace);
+           }
          else
            {
              pedwarn ("specializing `%#T' in different namespace", type);