diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e59e9c1a9ec..e3d3a268637 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-03-25 Jason Merrill + + PR c++/13294 + * pt.c (maybe_process_partial_specialization): Remember the + context of a specialization. + 2004-03-25 Kazu Hirata * cxx-pretty-print.c: Fix comment typos. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index be2f2c7c405..3e3d0e91f5d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -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);